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