MySQL Daten aus TXT – CSV in Tabelle importieren – ab Zeile 2 und Fehler ignorieren

In einem meiner aktuellen Projekte stand ich vor der Aufgabe eine Textdatei (.txt) in eine MySQL Datenbank zu importieren. Soweit ja kein Problem, geht auch über phpMyAdmin, allerdings sollte die Textdatei ab der 2. Zeile, in eine bestimmte Tabelle und mögliche Fehler sollten ignoriert, importiert werden. Ok, kurz in phpMyAdmin geschaut, aber so schnell keine Lösung gefunden, bzw. der Import dauert länger als direkt in der Konsole. System ist ein Windows 7 Professional mit MySQL 5.5.32 auf XAMPP

Nach kurzer Suche in den Unterlagen von MySQL, fand ich diesen Link: http://dev.mysql.com/doc/refman/5.1/en/load-data.html

Los gehts:

1. Konsole öffnen -> cmd
2. Mysql Konsole starten:# mysql
3. Datenbank auswählen: # mysql> use <database>;
4. TXT-Datei in die Tabelle importieren:

Die Daten lagen im folgenden Format in der .TXT vor: spalte1,spalte2,spalte3,…

# mysql> load data infile ‘<pfad>/<dateiname.txt>’ ignore into table <tbl_name> fields terminated by ‘,’ ignore 1 lines;
Query OK, 3173958 rows affected, 65535 warnings (1 min 28.26 sec)
Records: 3173958  Deleted: 0  Skipped: 0  Warnings: 3635371

– alles in <> sind deine Angaben also der Pfad und der Dateiname sowie die Tabelle in der die Daten importer werden sollen
– Parameter fields terminated by ‘,’ <- gibt an, dass die Daten in der TXT-Datei mit einem Komma getrennt sind, hier ggf. deinen Trenner eingragen
– ignore 1 lines <- hier wird die erste Zeile ignoriert, bei mir waren hier andere Tabellenköpfe enthalten

Und wie der Zufall so wollte brauchte ich selben Befehl ein paar Tage später erneut. Dieses Mal lagen die Daten jedoch als .CSV vor:“spalte1″,”spalte2″,”spalte3”,…

# mysql> load data infile ‘<pfad>\<dateiname.csv>’ ignore into table <tbl_name> fields enclosed by ‘\”‘ terminated by ‘,’;
Query OK, 3505202 rows affected, 53929 warnings (1 min 8.45 sec)
Records: 3505202  Deleted: 0  Skipped: 0  Warnings: 53929

– hier jetzt ganz wichtig die Option <enclosed by ‘\”‘ zu verwendne, ansonsten werden die doppelten Anführungszeichen mit importiert und führen zu Fehlern.

Und weiter gehts, wenn man nun noch nach dem Import in der letzten Spalte Doppelquotes / doppelte Anführungszeichen hat, dann muss man den Befehl wie folgend ausführen:

# mysql> load data infile ‘<pfad>\<dateiname.csv>’ ignore into table <tbl_name> fields enclosed by ‘\”‘ terminated by ‘,’ lines terminated by ‘\r\n’;

– hier habe ich die Option <lines terminated by> mit der Option \r für Return und \n für Leerzeichen verwenden, ggf. mit beiden Optionen rumprobieren

Info Linky zum Import: http://dev.mysql.com/doc/refman/5.0/en/mysqlimport.html

Schreibe einen Kommentar

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