|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | |||
|
Invité de passage
![]() Inscription : octobre 2006 Messages : 31 ![]() |
Bonjour à tous,
J'ai un problème avec une requête LOAD DATA IN FILE que je n'arrive pas à écrire. Voici le format de mon fichier csv : Citation:
id, nom, prenom, naissance, ville Pour le début de ma requête la syntaxe est je pense : Code :
Comment dire à ma requête de ne pas les prendre en compte ? Je ne trouve pas la syntaxe qui me permet de dire tels colonne du csv correspond à tel champs de ma table. Merci d'avance si vous arrivez à m'aider |
|||
|
|
00
|
|
|
#2 | |
|
Membre Expert
![]() Inscription : août 2002 Messages : 1 036 ![]() |
Bonjour,
Extrait du manuel mysql : Citation:
|
|
|
|
00
|
|
|
#3 | |
|
Invité de passage
![]() Inscription : octobre 2006 Messages : 31 ![]() |
Merci pour ta réponse mais ce que tu me dis je l'avais lu et je le met dans mon exemple (les champs de ma table sont spécifiés à la fin de ma requête).
Citation:
|
|
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() |
Bonjour,
Ce que fait MySQL, la doc en parle. Si la doc n'en parle pas, MySQL ne le fait probablement pas.
__________________
www.nudge.org Surveillez et optimisez vos applications Java |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : octobre 2006 Messages : 31 ![]() |
Bonjour,
ok, au cas ou il y avait un moyen de contourner ce problème Tant pis, je vais faire l'import en parsant ligne par ligne le csv en php. Merci de vos réponses |
|
|
00
|
|
|
#6 | |
![]() ![]() |
Pour compléter ce que dit Nudger :
Citation:
La solution : transférer toutes les données dans une table temporaire et ensuite requêter cette table pour alimenter la vraie table.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : octobre 2006 Messages : 31 ![]() |
Yes mais en fait le problème est plus complexe que ça dans mon cas.
J'ai pris un exemple simple pour pas rentrer dans des explications longues. En fait mon fichier csv comprend une trentaine de colonnes et ma table aussi. Certaine colonne du csv n'apparaissent pas dans ma table et vis-versa. Et j'ai environ 150 000 lignes. Alimenter une table temporaire et transférer dans ma table définitive me prend autant de temps que de parser le csv en php et faire des INSERT. Autre solution mais je ne la teste pas car elle me semble encore plus longue qui consiste à reconstruire mon csv automatiquement. Mais celui-ci est amené à évoluer régulièrement... En tout cas encore merci pour votre réactivité |
|
|
00
|
|
|
#8 |
![]() ![]() |
Importer 150 000 lignes CSV doit prendre moins d'une minute.
Une fois la requête créée, alimenter la vraie table à partir des 150 000 lignes de la table temporaire ne devrait pas prendre plus d'une seconde. Parser le fichier CSV en PHP et faire 150 000 requêtes INSERT à partir du PHP doit prendre à mon avis beaucoup plus longtemps ! Je me souviens avoir été obligé de faire ce genre de truc pour scinder une colonne multi-données et j'avais dû lancer le programme en deux fois en repérant à quelle ligne de la table il s'était interrompu par max_execution_time. En plus, la requête SQL est plus sûre que le programme PHP. Et si le fichier est à importer plusieurs fois mais que sa structure ne change pas, il suffit d'enregistrer la requête dans un fichier texte ou de faire un programme PHP qui lance d'abord la requête LOAD DATA INFILE puis la requête d'alimentation de la vraie table.
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique. Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework... « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau) À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française ! Linuxiens, comptez-vous ! |
|
00
|
|
|
#9 | ||
|
Nouveau Membre du Club
![]() Inscription : septembre 2008 Messages : 178 ![]() |
Essaye ceci:
Code :
|
||
|
|
00
|
Copyright © 2000-2012 - www.developpez.com