08 Mrz

CSV Datei per Script in MySQL importieren

Um eine CSV Datei über die Console zu importieren gibt es verschiedene Lösungsansätze. Ich finde diese jedoch am einfachsten.
Natürlich muss beachtet werden, dass das MySQL Passwort im Klartext in der Datei gespeichert wird, aber wenn diese nach dem Import gelöscht oder geschützt wird, kann man dies vernachlässigen.

Die Datei sollte natürlich auf keinen Fall im Document Root des Webservers liegen.

ACHTUNG: Durch das REPLACE werden die vorherigen Daten in der DB überschrieben. Wenn dies nicht gewünscht ist, einfach REPLACE weglassen.

INFILE=/pfad/zur/importdatei/datei.csv
mysql --local-infile=1 -u[USERNAME] -p[PASSWORD] [DATABASE] << EOF
LOAD DATA LOCAL INFILE '$INFILE' REPLACE INTO TABLE [TABLE] CHARACTER SET 'utf8'\
FIELDS TERMINATED BY ';' ENCLOSED BY '"' LINES TERMINATED BY '\n' \
;
EOF

Die Daten in der CSV müssen mit ; getrennt sein. Jeder Datensatz steht in einer eigenen Zeile und diese wird mit einem Umbruch \n abgeschlossen. Dadurch weiß die DB, dass eine neue Zeile ein neuer Datensatz ist.

Wenn in der CSV pro Datensatz 5 Spalten vorhanden sind, müssen in der Datenbank natürlich ebenfalls 5 Spalten vorhanden sein, da MySQL sonst meckert dass die Felder der CSV nicht mit den Feldern der Datenbank übereinstimmen.

2 Gedanken zu „CSV Datei per Script in MySQL importieren

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.