Der Speicherauszug einer MySQL-Tabelle beim Import ersetzte vorhandene Datensätze

9

Ich habe einen Dump mit mysqldump gemacht.

mysqldump -u... -p... mydb t1 > mydb_table.sql

Dann habe ich den Speicherauszug in eine andere Datenbank mit derselben Tabelle, aber unterschiedlichen Datensätzen importiert.

mysql -u...-p... mydb < mydb_tables.sql

Die importierende Datenbank hatte Datensätze von Primärschlüssel 1 bis 1000, und die exportierende Datenbank hatte 5000 bis 10.000.

Aber beim Importieren der vorhandenen Datensätze, dh 1 bis 1000 wurden gelöscht.

Wie?? Warum?? Wenn es sich um ein Standardverhalten handelt, welche Optionen kann ich dem Dump geben, damit es beim nächsten Mal nicht passiert?

Rajat Singhal
quelle

Antworten:

11

Der mysqldump löscht standardmäßig die Tabelle. Sie sollten die --no-create-infoOption wie folgt angeben :

mysqldump -u... -p... --no-create-info --skip-extended-insert mydb t1 > mydb_table.sql

Auf diese Weise müssen Sie nur Einsätze bearbeiten. Mit --skip-extended-insertwird jeweils eine Zeile eingefügt. Diese Hilfe behandelt doppelte Probleme, aber Sie müssen wie folgt importieren:

mysql -u...-p... --force mydb < mydb_tables.sql

Die --forceOption dient ausschließlich dazu, INSERTs fortzusetzen, falls ein doppelter Schlüssel auftritt. In diesem Fall wird der Fehler des fehlerhaften INSERT ignoriert und zum nächsten INSERT weitergeleitet.

RolandoMySQLDBA
quelle
Ist es möglich, die Daten abzurufen, die während des Dumps gelöscht wurden?
Arun Kumaresh