J'ai un fichier CSV qui contient 10 colonnes. Je souhaite sélectionner uniquement certaines colonnes de ce fichier et les charger dans une base de données MySQL à l'aide de la commande LOAD DATA INFILE
.
Chargez des données dans une table dans MySQL et spécifiez les 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 les colonnes du fichier csv (supposons 4) nom, id sont des colonnes de table.
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 vous suffit de remplacer column1, column2, etc. par vos noms de colonne et de placer @dummy partout où vous souhaitez ignorer une colonne du fichier CSV.
Détails complets ici .
Indiquez le nom des colonnes dans le fichier CSV dans l'instruction infile de chargement.
Le code est comme ça:
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) dans la table.
La seule chose à faire est de disposer d’un fichier CSV (filename.csv) avec deux valeurs par ligne. Sinon, merci de mentionner. J'ai une solution différente.
Je vous remercie.
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 le nombre de colonnes de votre table de base de données est supérieur au nombre de colonnes de 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,...);
Pour ceux qui ont l'erreur suivante:
Code d'erreur: 1290. Le serveur MySQL s'exécute avec le fichier Option --secure-file-priv afin qu'il ne puisse pas exécuter cette instruction
Vous pouvez simplement exécuter cette commande pour voir quel dossier peut charger des fichiers:
SHOW VARIABLES LIKE "secure_file_priv";
Après cela, vous devez copier les fichiers dans ce dossier et exécuter la requête avec LOAD DATA LOCAL INFILE
au lieu de LOAD DATA INFILE
.