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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Mettre à jour une table depuis un fichier formaté CVS dans SQL SERVER

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Mettre à jour une table depuis un fichier formaté CVS dans SQL SERVER

n°694112
pc2000
Posté le 06-04-2004 à 20:05:50  profilanswer
 

Voilà mon problème (je pense assez simple), je dois développer un site ouaib de e-commerce qui doit être capable de récupérer des données (prix et liste d'articles) sur un serveur FTP au format CVS (fichiers TXT contenant des données séparées par des ";" ).
La première chose est de mettre à jour la table ARTICLE (par exemple) en insérant directement les données contenus dans le fichier texte sans passer par un UPDATE ou un INSERT INTO car sinon vu la taille du fichier (10MO) ca risque d'être laborieux.
 
Surtout que cette opération doit être effectué de manière automatisé tous les jours (c'est un autre problème que je serais résoudre plus tard).
 
Donc travaillant sous ASP.NET et SQL server je me demandais comment procéder (il n'existe pas un truc comme MYSQL qui prend un fichier texte et qui ajoute automatiquement à la table).
Ou réaliser une fonction en VB.NET ou une procédure Transact SQL ?
 
Merci d'avance.


Message édité par pc2000 le 06-04-2004 à 20:07:16
mood
Publicité
Posté le 06-04-2004 à 20:05:50  profilanswer
 

n°694128
mrbebert
Posté le 06-04-2004 à 20:24:08  profilanswer
 

Je pense qu'il faut faire un script qui lit le fichier et génère les requêtes. Je ne connais pas d'autre moyen [:proy]  
Tu peux optimiser en construisant des requêtes qui insèrent plsusieurs (une dizaine ou une vingtaine généralement) enregistrements d'un coup :)


Message édité par mrbebert le 06-04-2004 à 20:24:33
n°694134
pc2000
Posté le 06-04-2004 à 20:35:47  profilanswer
 

mrbebert a écrit :

Je pense qu'il faut faire un script qui lit le fichier et génère les requêtes. Je ne connais pas d'autre moyen [:proy]  
Tu peux optimiser en construisant des requêtes qui insèrent plsusieurs (une dizaine ou une vingtaine généralement) enregistrements d'un coup :)


Je vais voir la source de PhpMyAdmin au niveau du traitement du fichier CVS mais c'est en php  :cry:
Pis si y avait la fonction recherche activée ça m'aiderait  :pfff:


Message édité par pc2000 le 06-04-2004 à 20:36:46
n°694135
mrbebert
Posté le 06-04-2004 à 20:37:35  profilanswer
 

PHP, c'est pas très compliqué à comprendre :)  
(sauf quand il y a des include dans tous les sens, certes :pt1cable: )

n°694138
pc2000
Posté le 06-04-2004 à 20:47:05  profilanswer
 

mrbebert a écrit :

PHP, c'est pas très compliqué à comprendre :)  
(sauf quand il y a des include dans tous les sens, certes :pt1cable: )


Je connais très bien PHP mais bon ASP.NET c'est pas vraiment la même façon de programmtion même si c'est le même algo.
Quelqu'un ne connaitrait pas un script déjà existant en ASP.NET pour récupérer générer des requêtes à partir un fichier CVS ?

n°694600
diode
Posté le 07-04-2004 à 13:38:16  profilanswer
 

Bonjour,
 
Il y a les lots DTS qui permettent d'importer ou exporter des données vers ou de SQL SERVER.
Donc pour ton problème, c'est ce que je ferais. L'aide de SQL SERVER est assez succinte sur les lots DTS (sauf pour l'aide sur dtsrun). je te conseille d'aller sur www.dbforums.com si tu comprends l'anglais.
Petit conseil : ne fait pas les lots DTS via l'assistant mais directement sous SQL Server Enterprise Manager / Serveur / Data transformation Service.
 
Question : Quelle est ta version de SQL SERVER ?
 
PS : Comme c'est le serveur qui travaille, la vitesse d'exécution est stupéfiante.

n°694611
kmaro1
Posté le 07-04-2004 à 13:55:46  profilanswer
 

Tout à fait le lot DTS et le plus approprié...
il permet l'automatisation...

n°694647
HappyHarry
Posté le 07-04-2004 à 14:20:14  profilanswer
 

bulk insert

n°694692
saxgard
Posté le 07-04-2004 à 15:15:08  profilanswer
 

mrbebert a écrit :

Je pense qu'il faut faire un script qui lit le fichier et génère les requêtes. Je ne connais pas d'autre moyen [:proy]  
Tu peux optimiser en construisant des requêtes qui insèrent plsusieurs (une dizaine ou une vingtaine généralement) enregistrements d'un coup :)


 
je fais que passer mais euh comment faire des requtes qui insèrent plusieurs enregistrement d'un coup?  :)

n°694898
mrbebert
Posté le 07-04-2004 à 17:43:23  profilanswer
 

saxgard a écrit :


 
je fais que passer mais euh comment faire des requtes qui insèrent plusieurs enregistrement d'un coup?  :)  

Après le VALUES, on peut mettre les valeurs de plusieurs lignes :
INSERT INTO table VALUES(1, 'valeur1', 0, 0), (2, 'valeur2', 0,0), (3, 'valeur3', 0,0);
L'avantage, c'est que c'est plus rapide de faire 1 requête insérant 3 enregistrements, que 3 requêtes insérant chacune 1 seule ligne.
 
Bon, je pense pas qu'on puisse mettre trop de champs à la suite non plus, mais 10 par 10 ou 20 par 20, c'est déjà nettement mieux :)  
(100 requêtes au lieu de 1000 pour insérer 1000 lignes, c'est pas négligeable)
 
edit : ca marche avec mysql, mais je pense que c'est une syntaxe générale [:figti]


Message édité par mrbebert le 07-04-2004 à 17:44:54
mood
Publicité
Posté le 07-04-2004 à 17:43:23  profilanswer
 

n°694906
HappyHarry
Posté le 07-04-2004 à 17:47:22  profilanswer
 

si tu peux mettre le fichier CSV sur le serveur hébergeant la base de données :
 

Code :
  1. bulk insert TABLE from 'chemin\fichier' with
  2. (
  3. rowterminator = '\r\n', -- a priori si c'est un fichier WIN
  4. fieldterminator = ';'
  5. )


 
sinon par bcp, avec un fichier de format qui va bien

n°695040
pc2000
Posté le 07-04-2004 à 19:15:04  profilanswer
 

diode a écrit :

Bonjour,
 
Il y a les lots DTS qui permettent d'importer ou exporter des données vers ou de SQL SERVER.
Donc pour ton problème, c'est ce que je ferais. L'aide de SQL SERVER est assez succinte sur les lots DTS (sauf pour l'aide sur dtsrun). je te conseille d'aller sur www.dbforums.com si tu comprends l'anglais.
Petit conseil : ne fait pas les lots DTS via l'assistant mais directement sous SQL Server Enterprise Manager / Serveur / Data transformation Service.
 
Question : Quelle est ta version de SQL SERVER ?
 
PS : Comme c'est le serveur qui travaille, la vitesse d'exécution est stupéfiante.


 
Il s'agit de SQL SERVER 2000.
En effet dans Enterprise Manager on peut très bien importer toutes sortes de données (textes, Excel, Access...) et ça a très bien marché.
Je vais me renseigner un peu sur les lots DTS pour l'automatisation.
Merci à tous,
 
A+


Message édité par pc2000 le 07-04-2004 à 19:19:46
n°695089
diode
Posté le 07-04-2004 à 20:30:06  profilanswer
 

L'avantage avec 2000 (par rapport à SQL SERVER 7), c'est le passage de paramètre sur les lots DTS (genre si ton fichier à un nom différent à chaque fois, avec la date par exemple...)
Bon courage


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

  Mettre à jour une table depuis un fichier formaté CVS dans SQL SERVER

 

Sujets relatifs
Valider un fichier xmlUpload de fichier (probleme résolu :D)
[C] problemes de lecture dans un fichier des noms de fichiers à ouvrir[php] include fichier xml/xsl
[javax][sql]Connection java/sSql Server[CVS] comment enlever un répertoire du cvs
[SQL][Compris]foreign keyQue représente % en SQL (aide pour moteur de recherche)
script pour mettre uns ite en page d'accueil 
Plus de sujets relatifs à : Mettre à jour une table depuis un fichier formaté CVS dans SQL SERVER


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