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.



Dokumenten-ID: kb/1836ac78-bd1b-4544-b86d-a07f12aa18aa
Package downloaden