Ich möchte Daten aus einer Datenbank in eine andere zusammenführen. Also erstelle ich einen Dump mit mysqldump
und importiere ihn dann in eine andere Datenbank (mit der gleichen Tabellenstruktur). Ich habe in diesem Fall keine Probleme (wie doppelte Einträge oder etwas anderes).
Aber ich führe einige Zusammenführungen zu Testzwecken durch und werde sie später endgültig zusammenführen. Daher möchte ich die Zusammenführung einige Male ausführen (Daten können geändert werden). Beachten Sie, dass meine Zeilen in meinen Tabellen niemals gelöscht werden, sondern nur eingefügt oder aktualisiert werden können.
Kann ich mysqldump mit der Option ON DUPLICATE erstellen? Oder kann ich einen Dump zusammenführen, der neue Daten einfügt und geänderte Daten aktualisiert?
Sicher, ich kann ON DUPLICATE
manuell in Dump einfügen , aber ich möchte den Zusammenführungsprozess automatisieren.
--replace
diesON DUPLICATE UPDATE
für jede Spalte gleichbedeutend ist . Leider ist mysqldump nicht dafür ausgelegt, bestimmte Spalten zu aktualisieren, da mysqldump Massenlade- und Speicherauszüge ausführt. Meine Antwort zeigt einfach, wozu mysqldump in der Lage ist. Dazu müssten Sie, abgesehen von mysqldump, benutzerdefinierten Code schreibenON DUPLICATE UPDATE
.REPLACE INTO
möglicherweise fehlschlägt , wenn Fremdschlüssel auf den zu aktualisierenden Datensatz verweisen, da der Datensatz nicht gelöscht werden kann, wenn diese Beziehungen getrennt werden. Wenn dies der Fall istON DELETE CASCADE
, werden die Tabellen, die von der zu aktualisierenden Tabelle abhängen, ausgeblendet.REPLACE INTO
ist eine ziemlich gefährliche Operation.REPLACE INTO
) gefährlich sein und "überraschende" Effekte haben können. Gute Antwort - wollte nur eine Einschränkung hinzufügen.