65 votes

Comment sauter les colonnes dans le fichier CSV lors de l'importation dans la table MySQL à l'aide de LOAD DATA INFILE?

J'ai un fichier CSV avec 11 colonnes et j'ai une table MySQL avec 9 colonnes.

Le fichier CSV ressemble:

col1, col2, col3, col4, col5, col6, col7, col8, col9, col10, col11

et la table MySQL ressemble:

col1, col2, col3, col4, col5, col6, col7, col8, col9

J'ai besoin de mapper les colonnes 1 à 8 de fichier CSV directement pour les 8 premières colonnes de la table MySQL. J'ai alors besoin de sauter les deux colonnes suivantes dans le fichier CSV et de les mapper la colonne 11 de fichier CSV à la colonne 9 de la table MySQL.

Pour le moment je suis en utilisant la commande SQL suivante:

LOAD DATA LOCAL INFILE 'filename.csv' INTO TABLE my_table
FIELDS TERMINATED BY ','
ENCLOSED BY ''
LINES TERMINATED BY '\n'

Mais le code ci-dessus les cartes les 9 premières colonnes du fichier CSV pour les 9 colonnes dans la table MySQL.

100voto

grapefrukt Points 16804

À partir de Mysql docs:

Vous pouvez également jeter une valeur d'entrée par de l'affecter à une variable utilisateur et pas de l'affectation de la variable à une table colonne:

LOAD DATA INFILE 'file.txt'  
INTO TABLE t1 (column1, @dummy, column2, @dummy, column3);

5voto

brzhang Points 31

étape 1.traiter avec awk.

cat file.txt |awk '{print $1,$2,$5...}'>new_file.txt

step2.charge dans mysql.

load data local infile 'new_file' into table t1(...)

la méthode ci-dessous est simple,mais n'entre pas dans la version inférieure de mysql.

LOAD DATA INFILE 'file.txt'  
INTO TABLE t1 (column1, @dummy, column2, @dummy, column3);

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X