CSV in MySQL einlesen
Wenn man größere Datenmengen in MySQL einlesen möchte, bietet sich ein CSV Import an – dieser scheint performanter als ein normales SQL Dump zu sein.
Allerdings bietet diese Form des Imports auch einige Tücken – hier ein paar Tipps wie man es zum Laufen bekommt:
Generelle Import Syntax
[code lang=“sql“]
LOAD DATA INFILE „{DATEI_NAME}“ INTO TABLE {TABELLEN_NAME} FIELDS TERMINATED BY ‚,‘ OPTIONALLY ENCLOSED BY ‚“‚ LINES TERMINATED BY ‚\n‘ IGNORE 1 LINES;
[/code]
Dabei müssen {DATEI_NAME} und {TABELLEN_NAME} angepasst werden. Die übrigen Angaben sind weitesgehend optional, aber bei dem konkreten Fall eines CSV Imports notwendig. Die Angaben sind ja weitesgehend selbsterklärend. IGNORE 1 LINES wird verwendet, wenn die erste Zeile die Spaltennamen enthält. In manchen Fällen ist ein
[code lang=“sql“]
LINES TERMINATED BY ‚\r\n‘
[/code]
notwendig (je nach Formatierung des Import-Files).
NULL-Values
Wenn das Import-File NULL Werte ohne Anführungszeichen enthält, sollte man die Datei vorher mit vi für den Import optimieren, dazu folgenden Befehl verwenden:
[code lang=“shell“]
vi {DATEI_NAME}
:%s/;NULL/;“NULL“/g
[/code]
Dadurch werden alle NULL werte in „NULL“ umgewandelt – SQL Werte dies dann korrekt als NULL und nicht als String.
Basic Infos
Wer noch nicht mit der Unix SQL Shell vertraut ist – so funktioniert das ganze:
- Auf dem Server einloggen
- [code lang=“shell“]mysql -u {DB_USER} -p[/code]
- Passwort des Datenbank Users eingeben
- [code lang=“sql“]USE {DB_NAME}[/code]
- Import-Befehl eingeben (s.oben)
Redaktor
ich werde es ausprobieren, danke