importer donnée CSV dans base sql

importer donnée CSV dans base sql - SQL/NoSQL - Programmation

Marsh Posté le 09-01-2007 à 14:57:02    

Bonjour,
Je voudrais importer des données d'un fichier CSV dans une table sql.
 
y a t'il aussi une methode pour que cette importation se fasse quotidiennement toute seule.
procedure stocké ? ou juste un scripte a créér ?
 
exemple fichier CSV contient '0'.
je voudrait importer ce '0' dans une table chiffre dans ma base de donnée.
(base SQL server 2000).
 
Si quelqun a une idée ou un bon tuto merci!!!

Reply

Marsh Posté le 09-01-2007 à 14:57:02   

Reply

Marsh Posté le 09-01-2007 à 16:04:50    

[:cupra]


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 09-01-2007 à 16:23:22    

pfff :-( c pas gagné!!!

Reply

Marsh Posté le 09-01-2007 à 16:28:00    

hum ça paraît pas très simple. en + je trouve rien de bien sympa sur le net

Reply

Marsh Posté le 01-03-2007 à 11:19:10    


 
Certe la "Cron table" n'existe pas sous windows mais il existe les "wintask" c'est pas aussi pratique mais ca reste efficace.

Message cité 1 fois
Message édité par kilren le 01-03-2007 à 11:20:35

---------------
--
Reply

Marsh Posté le 01-03-2007 à 14:59:34    

Avec SQL Server, c'est bête comme choux.
 
1/ Cherche les exemple dans la doc qui indiquent comment se connecter sur une base distante depuis du T-SQL via OLEDB. Y'a justement un exemple d'ouverture de fichier CSV
2/ Tu crées un JOB qui appelle ta procédure stockée qui contient une copie du code de l'exemple
 
Et zou !
 
Le seul truc, c'est que je sais plus comment ça s'appelle la fonction qui permet de se connecter à une base distante depuis SQL Server via OLEDB. sp_opendatabase ou un truc comme ça. Me souvient plus du tout.


Message édité par MagicBuzz le 01-03-2007 à 15:00:25
Reply

Marsh Posté le 01-03-2007 à 15:01:07    

kilren a écrit :

Certe la "Cron table" n'existe pas sous windows mais il existe les "wintask" c'est pas aussi pratique mais ca reste efficace.


quand on utilise un vrai SGBD, surtout, ça sert à rien.
SQL Server (tout comme Oracle) disposent de leur propre planificateur de tâches en interne...

Reply

Marsh Posté le 01-03-2007 à 15:15:25    

l'équivalent à sqlloader d'oracle n'existe pas sous sql server ?

Reply

Marsh Posté le 01-03-2007 à 15:18:15    

Ca s'appelle un lot DTS, et c'est une insulte que de le comparer à ce dinosaure de SQL Loader :o
 
Ceci dit, pour importer un CSV, c'est vraiment la grue de démolition pour égrainer un pissenlis...

Reply

Marsh Posté le 01-03-2007 à 15:21:50    

ouais bah voilà ca sert à rien les outils modernes si c'est pour se faire chier quand on veut quelque chose de simple =)

Reply

Marsh Posté le 01-03-2007 à 15:21:50   

Reply

Marsh Posté le 01-03-2007 à 15:32:01    

couak a écrit :

l'équivalent à sqlloader d'oracle n'existe pas sous sql server ?


 
 
La commande "BULK insert" te permet de faire cet import.
Il existe aussi dans SQL server une appli qui s'appelle BCP.EXE.
 
Ces 2 fonctions permettent d'associer un fichier de paramètrage afin de simplifier les import récurrents (ordre des colonnes différent dans le fichier et la table colonne en moins type de l'attribut...) on peut même locker la table pendant l'import et permettre l'execution des triggers (attention à la charge du serveur).
 
La gestion des problèmes liés au format des dates (ymd or dmy...) n'est malheureusement pas prévue.
 
Aujourd'hui, je fait un SET DATEFORMAT avant est après l'import ce qui n'et pas très propre. Heureusement dans mon cas aucun autre traitement n'est fait pendant la période d'import.
 
Si quelqu'un à une solution plus propre je suis preneur.

Message cité 2 fois
Message édité par kilren le 01-03-2007 à 15:46:36
Reply

Marsh Posté le 01-03-2007 à 15:34:03    

kilren a écrit :

La commande "BULK insert" te permet de faire cet import.
Il existe aussi dans SQL server une appli qui s'appelle BCP.EXE.
 
Ces 2 fonctions permettent d'associer un fichier de paramètrage afin de simplifier les import récurrents (ordre des colonnes différent dans le fichier et la table colonne en moins type de l'attribut...) on peut même locker la table pendant l'import et permettre l'execution des triggers (attention à la charge du serveur).
 
La gestion des problèmes liés au format des dates (ymd or dmy...) n'est malheureusement pas prévue.
 
Aujourd'hui, je fait un SET DATEFORMAT avant est après l'import ce qui n'et pas très propre. Heureusement dans mon cas aucun autre traitement n'est fait pendant la période d'import.
 
Si quelqu'un à une solution plus propre je suis preneur.


 
 
DTS, 10 clicks et c'est pesé :D


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
Reply

Marsh Posté le 01-03-2007 à 15:45:31    

MagicBuzz a écrit :

quand on utilise un vrai SGBD, surtout, ça sert à rien.
SQL Server (tout comme Oracle) disposent de leur propre planificateur de tâches en interne...


 
Pour çà il y a plusieurs écoles, les "jobs" SQL Server répondent bien au besoin mais je préfère avoir un seul environnement pour gérer l'ensemble des tâches planifiées qui ne sont pas toutes lié aux bases de données du SI.

Reply

Marsh Posté le 01-03-2007 à 16:06:48    

l'intérêt d'un job, c'est quand même de :
- gérer les transaction tout au long d'un enchaînement de tâches
- gérer des enchaînements évolués de tâches sans avoir à programmer des script qui comportent toujours un risque d'erreur
- disposer de logs complets sans devoir les gérer à la main dans le script
 
ensuite, effectivement, je comprends que pour certaines choses / certains cas, on puisse préférer faire un cron au autre. perso, moi c'est le contraire : quand je peux m'en passer, je m'en passe ;)

Reply

Marsh Posté le 01-03-2007 à 16:07:15    

ixemul a écrit :

DTS, 10 clicks et c'est pesé :D


 
Peux tu détailler parce que je connais mal DTS?
Arrives tu à planifier tes import DTS?  
çà m'intéresse.

Reply

Marsh Posté le 01-03-2007 à 16:12:37    

kilren a écrit :

La commande "BULK insert" te permet de faire cet import.
Il existe aussi dans SQL server une appli qui s'appelle BCP.EXE.
 
Ces 2 fonctions permettent d'associer un fichier de paramètrage afin de simplifier les import récurrents (ordre des colonnes différent dans le fichier et la table colonne en moins type de l'attribut...) on peut même locker la table pendant l'import et permettre l'execution des triggers (attention à la charge du serveur).
 
La gestion des problèmes liés au format des dates (ymd or dmy...) n'est malheureusement pas prévue.
 
Aujourd'hui, je fait un SET DATEFORMAT avant est après l'import ce qui n'et pas très propre. Heureusement dans mon cas aucun autre traitement n'est fait pendant la période d'import.
 
Si quelqu'un à une solution plus propre je suis preneur.


m'en fiche :o c'était une boutade car je ne connais pas sql server, je suis plus côté oracle

Reply

Marsh Posté le 01-03-2007 à 16:17:49    

MagicBuzz a écrit :

l'intérêt d'un job, c'est quand même de :
- gérer les transaction tout au long d'un enchaînement de tâches
- gérer des enchaînements évolués de tâches sans avoir à programmer des script qui comportent toujours un risque d'erreur
- disposer de logs complets sans devoir les gérer à la main dans le script
 
ensuite, effectivement, je comprends que pour certaines choses / certains cas, on puisse préférer faire un cron au autre. perso, moi c'est le contraire : quand je peux m'en passer, je m'en passe ;)


ca dépend fortement des entreprises, moi je sais que chez moi on utilise un scheduler ce qui n'est pas un mal vu toutes les souplesses apportées par ce genre d'outil

Reply

Marsh Posté le 01-03-2007 à 16:20:59    

kilren a écrit :

Peux tu détailler parce que je connais mal DTS?
Arrives tu à planifier tes import DTS?  
çà m'intéresse.


 
Expliquer comment utiliser DTS sur le forum, c'est un peu too much ;)
 
Essaye juste par toi même de créer une petite base et de créer un lot DTS permetant d'y inserer le contenu d'un fichier CSV, tu verra, en 15~30 mins t'aura compris le truc
 
sinon, pour la planification, tiré de la doc SQL Server:
 


Planification d'un lot DTS pour l'exécution
Vous pouvez planifier l'exécution d'un lot DTS (Data Transformation Services) enregistré à certains moments spécifiques, soit une seule fois, soit à intervalles réguliers. Exemple :  
 
Tous les jours à minuit (00:00)  
 
 
Tous les dimanches à 06:00 heures
 
 
Chaque premier ou dernier jour du mois  
Les lots DTS planifiés sont exécutés par l'Agent SQL Server en tant que travaux. Étant donné que l'Agent SQL Server contrôle l'automatisation sous-jacente de la planification, il doit être exécuté pour chaque lot planifié. Pour planifier l'exécution d'un lot DTS, suivez l'une des procédures suivantes :  
 
Dans SQL Server Enterprise Manager, cliquez avec le bouton droit sur un lot DTS, puis cliquez sur Planifier un lot.  
Cette méthode est la plus simple pour planifier l'exécution de lots créés dans le Concepteur DTS. Cependant, le lot doit avoir été enregistré dans la base de données msdb de Microsoft® SQL Server™ ou SQL Server 2000 Meta Data Services, et doit également exister sur le serveur local.
 
Pour planifier un lot DTS en utilisant l'option Planifier un lot  
 
Enterprise Manager
 
 
Planification d'un lot DTS avec l'option Planifier un lot (Enterprise Manager)
Pour planifier un lot DTS en utilisant l'option Planifier un lot  
 
Dans l'arborescence de la console de SQL Server Enterprise Manager, développez Data Transformation Services, puis cliquez sur Lots locaux ou Lots de services de métadonnées.
 
 
Dans le volet de détails, cliquez avec le bouton droit sur le lot DTS que vous voulez planifier, puis cliquez sur Planifier un lot.
 
 
Complétez les informations requises dans la boîte de dialogue Modifier la planification des travaux périodiques.  
 
 
Remarque  Les lots planifiés sont exécutés par l'Agent SQL Server, avec les autorisations spécifiées lors de l'enregistrement du serveur. Si l'authentification Windows a été utilisée, l'Agent SQL Server va essayer de charger le lot avec son propre niveau de sécurité, ce qui peut ne pas être suffisant. Pour plus d'informations, reportez-vous à Gestion de la sécurité de lot dans DTS.
 
 
 
Voir aussi
 
Planification d'un lot DTS pour l'exécution
 
 
Utilisez l'Agent SQL Server pour planifier un lot créé dans le Concepteur DTS, à l'aide de l'Assistant Importation/exportation DTS, ou en tant que programme externe.  
Pour planifier un lot DTS à l'aide de l'Agent SQL Server  
 
Enterprise Manager
 
 
Planification d'un lot DTS avec l'Agent SQL Server (Enterprise Manager)
Pour planifier un lot DTS avec l'Agent SQL Server  
 
Dans l'arborescence de la console de SQL Server Enterprise Manager, développez Gestion, puis cliquez sur Agent SQL Server.
 
 
Dans le volet de détails, cliquez avec le bouton droit sur Travaux, puis cliquez sur Nouveau travail.
 
 
Dans l'onglet Général, complétez les informations relatives à la configuration du nouveau travail.  
 
 
Cliquez sur l'onglet Étapes, puis sur Nouveau et procédez comme suit :  
Dans la zone Nom d'étape, entrez un nom.
 
 
Dans la liste Type, cliquez sur Commande du système d'exploitation (CmdExec).
 
 
Dans la zone de texte Commande, entrez la commande dtsrun pour le lot.  
 
 
Remarque  Les lots planifiés sont exécutés par l'Agent SQL Server et, comme tels, ils n'ont pas les mêmes lettres de lecteurs partagés ou les mêmes autorisations que le créateur du lot.
 
 
 
Voir aussi
 
Planification d'un lot DTS pour l'exécution
 
 
Utilisez l'option de planification dans l'utilitaire DTS Run (dtsrunui). Utilisez cette option pour planifier un lot enregistré en tant que fichier de stockage structuré.  
 
Si vous souhaitez planifier l'exécution d'un lot ailleurs que sur le serveur local, inscrivez d'abord le serveur envisagé, avant d'utiliser l'option de planification de l'utilitaire DTS Run.
 
 


 
 


---------------
VA APPRENDRE ET REVIENS QUAND TU SAIS, SINON ABSTIENT TOI C'EST UN GRAND CONSEIL QUE JE TE DONNE... TU ES INCOMPÉTENT ET C'EST UNE RÉALITÉ, TU N'AS RIEN A FAIRE ICI FAUT S'Y CONNAITRE ... -Jojo1998 - RIP - http://tinyurl.com/qc47ftk
Reply

Marsh Posté le 01-03-2007 à 17:52:04    

ixemul a écrit :

Expliquer comment utiliser DTS sur le forum, c'est un peu too much ;)


 
merci

Reply

Marsh Posté le 02-03-2007 à 23:27:04    

sqlloader, je suppose que ca soit etre un équivalent à LOAD DATA in FILE ...
une simple requete SQL qui permet d'importer par paquet :) mais ce n'est peut etre pas supporté sur SQL server

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed