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
Interessiert in verschiedenste IT Themen, schreibe ich in diesem Blog über Software, Hardware, Smart Home, Games und vieles mehr. Ich berichte z.B. über die Installation und Konfiguration von Software als auch von Problemen mit dieser. News sind ebenso spannend, sodass ich auch über Updates, Releases und Neuigkeiten aus der IT berichte. Letztendlich nutze ich Taste-of-IT als eigene Dokumentation und Anlaufstelle bei wiederkehrenden Themen. Ich hoffe ich kann dich ebenso informieren und bei Problemen eine schnelle Lösung anbieten. Wer meinen Aufwand unterstützen möchte, kann gerne eine Tasse oder Pod Kaffe per PayPal spenden – vielen Dank.