89 votes

Comment insérer des colonnes sélectionnées d'un fichier CSV dans une base de données MySQL en utilisant LOAD DATA INFILE

J'ai un fichier CSV qui contient 10 colonnes. Je veux sélectionner seulement quelques colonnes de ce fichier et les charger dans une base de données MySQL LOAD DATA INFILE.

127voto

ArK Points 5284

Charger des données dans une table dans MySQL et spécifier des colonnes :

LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE t1 
FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'  
(@col1,@col2,@col3,@col4) set name=@col4,id=@col2 ;

@col1,2,3,4 sont des variables pour contenir le nom des colonnes de fichier csv (supposons 4 ),id sont des colonnes de table.

38voto

Ataboy Josef Points 1855

Spécifiez le nom des colonnes dans le CSV dans l'instruction Load Data Infile.

Le code est comme ceci :

LOAD DATA INFILE '/path/filename.csv'
INTO TABLE table_name
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n'
(column_name3, column_name5);

Ici, vous allez ajouter des données à seulement deux colonnes(vous pouvez les choisir avec le nom de la colonne) à la table.

La seule chose que vous devez faire attention est que vous avez un fichier CSV (nomdefichier.csv) avec deux valeurs par ligne(ligne). Sinon, veuillez mentionner. J'ai une autre solution.

Je vous remercie.

37voto

Marc B Points 195501
LOAD DATA INFILE 'file.csv'
  INTO TABLE t1
  (column1, @dummy, column2, @dummy, column3, ...)
FIELDS TERMINATED BY ',' ENCLOSED BY '"' ESCAPED BY '"'
LINES TERMINATED BY '\r\n';

Il suffit de remplacer la colonne1, la colonne2, etc. par vos noms de colonne, et de mettre @dummy là où il y a une colonne dans le CSV que vous voulez ignorer.

Tous les détails ici.

18voto

Roberto Góes Points 676

Exemple :

Contenu du fichier ae.csv :

"Date, xpto 14"
"code","number","year","C"
"blab","15885","2016","Y"
"aeea","15883","1982","E"
"xpto","15884","1986","B"
"jrgg","15885","1400","A"

CREATE TABLE Tabletmp (  
    rec VARCHAR(9) 
);

Pour mettre seulement la colonne 3 :

LOAD DATA INFILE '/local/ae.csv' 
INTO TABLE Tabletmp
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\r\n'
IGNORE 2 LINES
(@col1, @col2, @col3, @col4, @col5)
set rec = @col3;


select * from Tabletmp;
    2016
    1982
    1986
    1400

3voto

Abderrahmane Points 24

si vous avez un nombre de colonnes dans votre table de base de données supérieur au nombre de colonnes dans votre csv, vous pouvez procéder comme suit :

LOAD DATA LOCAL INFILE 'pathOfFile.csv'
INTO TABLE youTable 
CHARACTER SET latin1 FIELDS TERMINATED BY ';' #you can use ',' if you have comma separated
OPTIONALLY ENCLOSED BY '"' 
ESCAPED BY '\\' 
LINES TERMINATED BY '\r\n'
(yourcolumn,yourcolumn2,yourcolumn3,yourcolumn4,...);

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