importer donnée CSV dans base sql - SQL/NoSQL - Programmation
Marsh Posté le 09-01-2007 à 16:04:50
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
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.
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.
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...
Marsh Posté le 01-03-2007 à 15:15:25
ReplyMarsh 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
Ceci dit, pour importer un CSV, c'est vraiment la grue de démolition pour égrainer un pissenlis...
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 =)
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.
Marsh Posté le 01-03-2007 à 15:34:03
kilren a écrit : La commande "BULK insert" te permet de faire cet import. |
DTS, 10 clicks et c'est pesé
Marsh Posté le 01-03-2007 à 15:45:31
MagicBuzz a écrit : quand on utilise un vrai SGBD, surtout, ça sert à rien. |
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.
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
Marsh Posté le 01-03-2007 à 16:07:15
ixemul a écrit : DTS, 10 clicks et c'est pesé |
Peux tu détailler parce que je connais mal DTS?
Arrives tu à planifier tes import DTS?
çà m'intéresse.
Marsh Posté le 01-03-2007 à 16:12:37
kilren a écrit : La commande "BULK insert" te permet de faire cet import. |
m'en fiche c'était une boutade car je ne connais pas sql server, je suis plus côté oracle
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 : |
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
Marsh Posté le 01-03-2007 à 16:20:59
kilren a écrit : Peux tu détailler parce que je connais mal DTS? |
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:
|
Marsh Posté le 01-03-2007 à 17:52:04
ReplyMarsh 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
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!!!