CSV in MySQL einlesen

11. May, 2011 · 1 Kommentar

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

LOAD DATA INFILE "{DATEI_NAME}" INTO TABLE {TABELLEN_NAME} FIELDS TERMINATED BY ',' OPTIONALLY ENCLOSED BY '"' LINES TERMINATED BY '\n' IGNORE 1 LINES;

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

LINES TERMINATED BY '\r\n'

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:

vi {DATEI_NAME}
:%s/;NULL/;"NULL"/g

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
  • mysql -u {DB_USER} -p
  • Passwort des Datenbank Users eingeben
  • USE {DB_NAME}
  • Import-Befehl eingeben (s.oben)

Ihren XING-Kontakten zeigen Artikel bei Xing veröffentlichen
Kategorie:MySQL
Tags: · · · ·
  • Redaktor

    ich werde es ausprobieren, danke

meet me in the interwebs
Kaffee-Kasse
Flattr ist ein sehr gut gemachter Micropayment Dienst, der es endlich ermöglicht auf faire Weise Geld zu spenden und einzunehmen.