Importation d'un fichier csv dans mysql via la ligne de commande

J'essaie d'importer un très grand .fichier csv (~4 go) dans mysql. J'envisageais d'utiliser phpmyadmin, mais alors vous avez une taille de téléchargement maximale de 2mb. Quelqu'un m'a dit que je devais utiliser la ligne de commande.

J'allais utiliser ces instructions pour l'importer: http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html#c5680

Quelle serait la commande pour définir la première ligne dans le .table csv comme noms de colonnes dans la table mysql? Cette option est disponible via phpmyadmin, donc leur doit être une version de ligne de commande mysql aussi, Non?. S'il vous plaît aider moi. Merci.

-Raj

42
demandé sur OMG Ponies 2011-07-07 08:18:50

6 réponses

Essayez cette commande

 load data local infile 'file.csv' into table table
 fields terminated by ','
 enclosed by '"'
 lines terminated by '\n'
 (column1, column2, column3,...)

Les champs ici sont les champs de table réels dans lesquels les données doivent s'asseoir. Les lignes fermées par et terminées par sont facultatives et peuvent vous aider si vous avez des colonnes entourées de guillemets doubles tels que les exportations Excel,etc.

Pour plus de détails, consultez le manuel .

Pour définir la première ligne comme noms de colonne de table, ignorez simplement la ligne d'être lue et ajoutez les valeurs dans la commande.

95
répondu Balanivash 2011-07-07 07:44:46

, Vous pourriez faire un

mysqlimport --columns='head -n 1 $yourfile' --ignore-lines=1 dbname $yourfile`

C'est-à-dire, si votre fichier est séparé par des virgules et n'est pas séparé par des points-virgules. Sinon, vous pourriez avoir besoin de sed à travers elle aussi.

10
répondu Niels van Adrichem 2017-11-14 08:36:09

Essayez ceci:

mysql -uusername -ppassword --local-infile scrapping -e "LOAD DATA LOCAL INFILE 'CSVname.csv'  INTO TABLE table_name  FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'"
6
répondu Rahul Arora 2016-10-24 13:34:53

Pour importer csv avec une ligne d'en-tête en utilisant mysqlimport, ajoutez simplement

--ignore-lines=N

(ignore les N premières lignes du fichier de données)

Cette option est décrite dans la page que vous avez liée.

5
répondu Bjoern 2011-07-07 04:24:20

Vous pouvez le mettre de la manière suivante:

LOAD DATA LOCAL INFILE 'C:/Users/userName/Downloads/tableName.csv' INTO TABLE tableName FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n';

0
répondu Daud Mabena 2018-03-20 14:11:51

, Vous pouvez simplement importer par

mysqlimport --ignore-lines=1 --lines-terminated-by='\n' --fields-terminated-by=',' --fields-enclosed-by='"' --verbose --local -uroot -proot db_name csv_import.csv

Remarque: Le nom du fichier Csv et le nom de la Table doivent être identiques

0
répondu Aravinthan K 2018-09-14 07:56:01