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
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.
, 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.
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'"
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.
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';
, 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