134 votes

Importer des données dans MySQL à partir d'un fichier CSV en utilisant LOAD DATA INFILE

J'importe des données de 20 000 lignes d'un fichier CSV vers MySQL.

Les colonnes du fichier CSV sont dans un ordre différent de celui des colonnes des tables MySQL. Comment puis-je attribuer automatiquement des colonnes correspondant aux colonnes des tables MySQL ?

Quand j'exécute

LOAD DATA INFILE 'abc.csv' INTO TABLE abc

cette requête ajoute toutes les données à la première colonne.

Quelle est la syntaxe automatique pour importer des données vers MySQL ?

2voto

Kikoz Points 136

Si vous exécutez LOAD DATA LOCAL INFILE à partir du shell Windows, et vous devez utiliser OPTIONALLY ENCLOSED BY '"' vous devrez faire quelque chose comme ceci afin d'échapper correctement aux caractères :

"C:\Program Files\MySQL\MySQL Server 5.6\bin\mysql" -u root --password=%password% -e "LOAD DATA LOCAL INFILE '!file!' INTO TABLE !table! FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"^""' LINES TERMINATED BY '\n' IGNORE 1 LINES" --verbose --show-warnings > mysql_!fname!.out

2voto

Mohammad Arshi Points 351

Supposons que vous utilisiez XAMPP y phpMyAdmin .

Vous avez un nom de fichier 'ratings.txt', un nom de table 'ratings' et un nom de base de données 'movies'.

Si votre XAMPP est installé dans " C:\xampp "copiez votre fichier "ratings.txt" dans le dossier " C:\xampp\mysql\data\movies dossier ".

LOAD DATA INFILE 'ratings.txt' INTO TABLE ratings FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\r\n' IGNORE 1 LINES;

Cela peut fonctionner si vous faites cela sur localhost.

2voto

Par les temps qui courent (fin 2019), je préfère utiliser un outil tel que Convertir CSV en SQL .

Si vous avez beaucoup de lignes, vous pouvez exécuter des blocs partitionnés en évitant les erreurs de l'utilisateur lorsque le CSV provient d'une feuille de calcul utilisateur finale.

2voto

Abhijit Das Points 11
  1. Editar mon.ini et ajoutez ce qui suit secure-file-priv = "" sous [mysqld] section. De plus, si une variable est déjà définie pour cela, supprimez-la.

  2. Redémarrez ensuite le service MySQL et exécutez la commande suivante pour vérifier si la valeur a été modifiée avec succès ou non :

    SHOW VARIABLES LIKE "secure_file_priv";

  3. Ensuite, vous pouvez exécuter la requête suivante dans le système MySQL installé et importer les données,

    LOAD DATA INFILE "csv file location" INTO TABLE tablename
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (column1,column2,.....);

    Note : (nom de colonne séparé par une virgule comme dans le fichier csv)

  4. Pour ajouter un fichier CSV à partir d'un autre système distant, vous pouvez également procéder comme suit après l'étape ci-dessus :

    show global variables like 'local_infile';
    -- Note: if the value is OFF then execute the next command below
    set global local_infile=true; 
    -- check back again if the value has been set to ON or not
  5. Exécutez la commande suivante pour importer des données d'un fichier CSV à partir de tout autre système,

    LOAD DATA LOCAL INFILE "csv file location" INTO TABLE tablename
    FIELDS TERMINATED BY ','
    LINES TERMINATED BY '\n'
    IGNORE 1 LINES
    (column1,column2,.....);
    -- column name separated by comma as per csv file

1voto

Jorge T Points 54

Vous pouvez charger des données à partir d'un fichier CSV ou texte.

Si vous disposez d'un fichier texte contenant les enregistrements d'une table, vous pouvez charger ces enregistrements dans la table.

Par exemple, si vous disposez d'un fichier texte, où chaque ligne est un enregistrement contenant les valeurs de chaque colonne, vous pouvez charger les enregistrements de la manière suivante.

Fichier table.sql

id //field 1

name //field2

Fichier table.txt

1,peter

2,daniel

...

Exemple sur Windows

LOAD DATA LOCAL INFILE 'C:\\directory_example\\table.txt'
INTO TABLE Table
CHARACTER SET UTF8
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\r\n';

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