LOAD DATA LOCAL INFILE insert que certaines colonnes
cs_ericsandrine
Messages postés14Date d'inscriptionvendredi 4 février 2005StatutMembreDernière intervention16 juillet 2009
-
16 juil. 2009 à 09:43
useralacon
Messages postés1Date d'inscriptionmercredi 5 août 2009StatutMembreDernière intervention 5 août 2009
-
5 août 2009 à 17:23
bonjour
j'ai un fichier csv avec 10 colonnes et ma table n'a que 3 colonnes
peut on faire un LOAD DATA LOCAL INFILE en ne récupérant que certaines du fichier csv ?
je voudrais mettre :
la colonne 1 de mon fichier csv dans la colonne 3 de ma table
la colonne 5 de mon fichier csv dans la colonne 2 de ma table
la colonne 6 de mon fichier csv dans la colonne 1 de ma table
ma table ne contiend que 3 colonnes
si on ne peut pas le faire directement, comment le faire ,
useralacon
Messages postés1Date d'inscriptionmercredi 5 août 2009StatutMembreDernière intervention 5 août 2009 5 août 2009 à 17:23
Il existe une option à placer en toute fin de commande load qui permet de préciser l'ordre de chargement des colonnes dans la table en sortie.
exemple pour reprendre ton cas:
load data local infile "nom_de_ton_fichier" into table nom_de_ta_table (col3_de_ta_table,col2_de_ta_table,col1_de_ta_table);
Le problème c'est que dans ton cas cela ne marchera pas car ce sont les colonnes 1,5,6 de ton fichier qui t'interressent et non pas les colonnes 1,2,3.
dans l'absolu il faudrait faire un truc du genre (col3_de_ta_table,,,,col2_de_ta_table,col1_de_ta_table). Hors l'option ne permet pas de shunter une colonne du fichier entrée par une virgule par exemple.
Il est donc impératif que toutes les colonnes qui t'interressent soient en début de ligne même si l'ordre entre-elles n'importe pas.
À noter que si le fichier entrée contient plus de colonnes que la table en sortie ce n'est pas grave. Tu as droit à un warning au chargement, sans plus.
Alors comment faire dans ton cas ?
2 possibilités:
- Primo. Sous éditeur (genre VI par exemple), faire disparaitre les colonnes 2,3,4 de chaque ligne de ton fichier en entrée puis lancer la commande load avec l'option comme mentionnée dans l'exemple plus haut.
- Secondo. regénerer ton fichier entrée par une commande select col6_name,col5_name,col1_name into outfile "nom_de_ton_fichier" from table nom_de_ta_table_en_entrée; puis lancer une commande load normalle.