Kategorien
MySQL

Importieren/Exportieren großer MySQL Datenbanken unter Xampp

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:

  1. 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.
  2. 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.