Beim Importieren großer Datenmengen unter Xampp stößt man über den Weg von phpMyAdmin schnell auf Grenzen der Skriptlaufzeit oder auf Performance-Grenzen:
Fatal error: Maximum execution time exceeded
Diese kann zwar angepasst werden, aber ein solcher Import kann Stunden dauern. Der Import über die Konsole ist um den Faktor 10 schneller. Statt einer Stunde benötigt man damit nur ein paar Minuten und hat keine Probleme mit der Skriptlaufzeit oder ähnlichem. Am schnellsten und unkompliziertesten ist ein Import über die MySQL-Konsole:
- einfach im Xampp Control Panel auf shell klicken und dann in der Konsole die folgenden Befehle eingeben:
mysql -u root -p
Passwort eingeben oder einfachmit ENTER bestätigen, wenn kein passwort festgelegt wurde. Root ist der Benutzer der Datenbank, kann abweichen. Dann die Datenbank auswählen, die importiert werden soll, ggf. vorher anlegen, wenn diese nicht existent.
use meineDatenbank;
Dann den Import starten mit:
source C:\data\mysqldump\db.sql
Dies funktioniert für Import-Dateien im SQL Format.
Import von CSV-Dateien über die MySQL Konsole
Bei einer Importdatei im folgenden csv-Format:
Blalabl Copyright Zeug Spalte1,Spalte2,Spalte3 "123","12432","22343" "1223","12432","2343" "1223","12432","23243"
muss man folgender Maßen vorgehen:
- Anlegen der Tabelle „test2“ mit 3 Spalten vom Datentyp INT. Hierbei ist zu beachten, dass der Wertebereich von INT nur bis geht. Bei größeren Zahlen muss man entweder auf UNSIGNED INT oder BIGINT wechseln, siehe MySQL Referenz.
- Import mit dem folgenden SQL Statement:
LOAD DATA INFILE 'C:/archiv/data.csv' INTO TABLE mytable FIELDS TERMINATED BY ',' ENCLOSED BY '"' IGNORE 2 LINES;
Hinweis: Windows-Pfadnamen müssen unter Verwendung von Schrägstrichen (statt Backslashs) angegeben werden. Wenn Sie Backslashs (umgekehrte Schrägstriche) verwenden, müssen Sie sie doppelt angeben. (siehe MySQL Referenz)
Exportieren von MySQL Datenbanken über die MySQL Console
Geht ganz einfach mit dem folgenden Befehl:
mysqldump -u root -p db_name> D:\export.sql
Hinweis: Man darf nicht mit dem Mysql Cli engeloggt sein dafür.
Mehr Information zu mysqldump gibt es hier.