DB Dumps in Mysql importieren

Irgendwann sitzt man vor dem Dump einer Datenbank und möchte diesen in sein RDBMS einspielen. Das ist keine große Sache, aber je nach Dump muß man ein wenig Zeit mitbringen und vielleicht ein wenig tricksen. Um Verwirrungen zu vermeiden nenne ich den Mysql Server RDBMS – also relationales Datenbank Management System. Unter Linux heißt der Prozess mysqld. Das RDBMS verwaltet wie der Name schon sagt Datenbanken die Tabellen mit Daten enthalten. Soweit so klar? Auf gehts ab gehts 🙂

Das Tool meiner Wahl für den Import – und auch um Queries abzusetzen –  ist der mysql Client.

Verbinde Dich auf die Maschine auf der mysqld läuft und starte mysql

mysql -u <user> -p

Mit -p wird die Passwortabfrage für den angegebenen Nutzer erzwungen.

Nun wird eine Datenbank angelegt in die der Dump geschaufelt wird

mysql> create database dump;

Befehle werden immer mit einem Semikolon terminiert. Mit   q kann man den Mysql Prompt jederzeit verlassen.

Eine einzelne Datei mit Tabellenbeschreibungen und Werten läßt sich so importieren:

mysql -u root -p  <DBNAME>  < sqldump.sql

Der Inhalt der Datei sqldump.sql wird einfach zum mysql Befehl umgeleitet. In meinem Beispiel ist DBNAME=dump.

Mit dem Schalter -v (verbose – gesprächig) kann man mysql bei der Arbeit zusehen oder die Ausgabe analysieren.

Wenn der Dump aus mehreren Dateien besteht gibt man die einfach mit cat aus und leitet sie an mysql weiter:

cat *sql |mysql -u root -p <DBNAME>

Man kann der Datenbank auch beim wachsen zusehen, dafür ist der Befehl du ideal:

watch du -h /var/lib/mysql/<DBNAME>

Bitte beachte, daß der Befehl kann nur als Root User erfolgreich ausgeführt werden.

Manchmal steht es mit der referentiellen Integrität des Dumps nicht zum Besten. Mit der Option -f kann man das Laden erzwingen. Allerdings ist ein Datenverlust beim Import sehr wahrscheinlich

cat *sql |mysql -f -u root -p <DBNAME>

Wie ich schon schrieb muß man je nachdem was und wieviel man importieren möchte ein wenig Zeit mitbringen.