Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1151 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  importer donnée CSV dans base sql

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

importer donnée CSV dans base sql

n°1500773
jedebute75
Posté le 09-01-2007 à 14:57:02  profilanswer
 

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!!!

mood
Publicité
Posté le 09-01-2007 à 14:57:02  profilanswer
 

n°1500818
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 09-01-2007 à 16:04:50  profilanswer
 

[:cupra]


---------------
J'ai un string dans l'array (Paris Hilton)
n°1500824
jedebute75
Posté le 09-01-2007 à 16:23:22  profilanswer
 

pfff :-( c pas gagné!!!

n°1500828
jedebute75
Posté le 09-01-2007 à 16:28:00  profilanswer
 

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

n°1522143
kilren
Posté le 01-03-2007 à 11:19:10  profilanswer
 


 
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

---------------
--
n°1522291
MagicBuzz
Posté le 01-03-2007 à 14:59:34  profilanswer
 

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
n°1522293
MagicBuzz
Posté le 01-03-2007 à 15:01:07  profilanswer
 

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...

n°1522317
couak
Posté le 01-03-2007 à 15:15:25  profilanswer
 

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

n°1522321
MagicBuzz
Posté le 01-03-2007 à 15:18:15  profilanswer
 

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...

n°1522327
couak
Posté le 01-03-2007 à 15:21:50  profilanswer
 

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

mood
Publicité
Posté le 01-03-2007 à 15:21:50  profilanswer
 

n°1522344
kilren
Posté le 01-03-2007 à 15:32:01  profilanswer
 

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
n°1522348
ixemul
Nan mais sans blague ! ⚡
Posté le 01-03-2007 à 15:34:03  profilanswer
 

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
n°1522353
kilren
Posté le 01-03-2007 à 15:45:31  profilanswer
 

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.

n°1522381
MagicBuzz
Posté le 01-03-2007 à 16:06:48  profilanswer
 

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 ;)

n°1522382
kilren
Posté le 01-03-2007 à 16:07:15  profilanswer
 

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.

n°1522387
couak
Posté le 01-03-2007 à 16:12:37  profilanswer
 

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

n°1522393
couak
Posté le 01-03-2007 à 16:17:49  profilanswer
 

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

n°1522397
ixemul
Nan mais sans blague ! ⚡
Posté le 01-03-2007 à 16:20:59  profilanswer
 

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
n°1522439
kilren
Posté le 01-03-2007 à 17:52:04  profilanswer
 

ixemul a écrit :

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


 
merci

n°1523160
weed
Posté le 02-03-2007 à 23:27:04  profilanswer
 

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

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  importer donnée CSV dans base sql

 

Sujets relatifs
Convertir un .mdf vers base Oracle 10gBase de données facile a configurer
Connexion à une base mysql à partir d'un ordinateur distantImporter fichier vers serveur
[VBA Access]suppression d'une donnée selectionné dans une liste box[oracle+php]connexion a la base
Pagination de ma galerie sans base de donnéesCréation d'une base de donée
Principe de base, expliqué nulle partAcceder a une base de donnée sans passer par phpmyadmin
Plus de sujets relatifs à : importer donnée CSV dans base sql


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR