Menu
MySQL-Subset an Daten exportieren und an anderer Stelle importieren (XML)
Mit den folgenden Befehlen können beliebige Spalten und Zeilen exportiert und
später wieder importiert werden. Dabei wird ähnlich gearbeitet wie mysqldump
mit dem Unterschied das man um einiges flexibler ist.
mysql lager --execute="SELECT caption,description,articlegroup_id,articlecategory_id,articletype_id,created,updated,stock,color_id,code FROM article WHERE date(created)=CURDATE()" -X > mydump
Mit diesem Statement werden bestimmte Spalten und Zeilen selektiert und in das
XML-File mydump
geschrieben.
An anderer Stelle wird dieses File wiederum direkt in der MySQL-Shell importiert:
LOAD XML LOCAL INFILE 'mydump' INTO TABLE article CHARACTER SET UTF8;
Die Anweisung CHARACTER SET UTF8
ist wichtig damit keine Sonderzeichen/Umlaute
verloren gehen.
Per Default ist unter Debian LOCAL INFILE
nicht erlaubt. Um dies zu ändern
genügt folgende Änderung in der my.cnf
[mysql] local-infile=1
In manchen Situationen ist ein mysqldump
nicht brauchbar. Vor allem wenn in
der Ziel-DB ID's existieren welche auch im Dump vorkommen. Mit den obigen
Schritten kann man hier Abhilfe schaffen und ggfs. das XML-Skript auch noch mit
diversen Shell-Befehlen vorbehandeln bevor es dann tatsächlich eingespielt wird.
Keywords: mysql, sql
Dokumenten-ID: kb/1836ac78-bd1b-4544-b86d-a07f12aa18aa