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
.
Réponses
Trop de publicités?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.
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.
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.
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
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,...);