it-swarm.com.de

Importieren eines csv in mysql über die Befehlszeile

Ich versuche, eine sehr große CSV-Datei (~ 4 GB) in Mysql zu importieren. Ich habe überlegt, phpmyadmin zu verwenden, aber dann haben Sie eine maximale Uploadgröße von 2 MB. Jemand sagte mir, dass ich die Befehlszeile benutzen muss. 

Ich wollte diese Anweisungen zum Importieren verwenden: http://dev.mysql.com/doc/refman/5.0/de/mysqlimport.html#c5680

Wie lautet der Befehl, um die erste Zeile in der CSV-Tabelle als Spaltennamen in der MySQL-Tabelle festzulegen? Diese Option ist über phpmyadmin verfügbar, daher muss es sich auch um eine mysql-Befehlszeilenversion handeln, oder? Bitte hilf mir. Vielen Dank.

-Raj

47
de1337ed

Versuchen Sie diesen Befehl

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

Bei den Feldern handelt es sich um die eigentlichen Tabellenfelder, in denen die Daten platziert werden müssen. Die eingeschlossenen Zeilen und die Zeilen, die durch abgeschlossen werden, sind optional und können hilfreich sein, wenn Spalten in doppelte Anführungszeichen gesetzt werden, z. B. Excel-Exporte usw.

Weitere Informationen finden Sie im manual .

Wenn Sie die erste Zeile als Tabellenspaltennamen festlegen möchten, ignorieren Sie einfach die Zeile und lesen Sie die Werte in den Befehl. 

107
Balanivash

Sie könnten eine machen 

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

Das heißt, wenn Ihre Datei durch Kommas getrennt und nicht durch Semikolon getrennt ist. Andernfalls müssen Sie möglicherweise auch sed durchgehen.

10

versuche dies: 

mysql -uusername -ppassword --local-infile scrapping -e "LOAD DATA LOCAL INFILE 'CSVname.csv'  INTO TABLE table_name  FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'"
8
Rahul Arora

Zum Importieren von csv mit einer Kopfzeile mit mysqlimport fügen Sie einfach Folgendes hinzu

--ignore-lines=N

(ignoriert die ersten N Zeilen der Datendatei)

Diese Option wird auf der von Ihnen verlinkten Seite beschrieben.

5
Bjoern

Sie können einfach mit importieren

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

Hinweis: Csv-Dateiname und Tabellenname sollten identisch sein

1
Aravinthan K

Sie können es auf folgende Weise setzen:

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

0
Daud Mabena

Eine andere Option ist die Verwendung des Befehls csvsql aus der Bibliothek csvkit.

Beispielnutzung direkt in der Kommandozeile:

csvsql --db mysql:///test --tables yourtable --insert yourfile.csv

Dies kann direkt in der Befehlszeile ausgeführt werden oder zur Automatisierung in ein Python- oder Shell-Skript integriert werden, wenn dies für eine Reihe von Dateien erforderlich ist.

mit csvsql können Sie im Handumdrehen Datenbanktabellen basierend auf der Struktur Ihrer CSV erstellen. Auf diese Weise können Sie die erste Zeile Ihrer CSV automatisch als MySQL-Tabellenheader konvertieren.

Vollständige Dokumentation und weitere Beispiele hier: https://csvkit.readthedocs.io/de/1.0.3/scripts/csvsql.html

0
user1725872