Zrzut tabeli mysql podczas importu zastąpił istniejące rekordy

9

Zrobiłem zrzut przy użyciu mysqldump ..

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

Następnie zaimportowałem zrzut do innej bazy danych mającej tę samą tabelę, ale inne rekordy ...

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

Baza danych importu miała rekordy od klucza podstawowego 1 do 1000, a baza danych eksportu miała 5000 do 10 000.

Ale podczas importu istniejące rekordy, tj. 1 do 1000 zostały usunięte.

W jaki sposób?? Dlaczego?? Jeśli jest to zachowanie domyślne, jakie opcje mogę dać zrzutowi, aby nie dopuścić do tego następnym razem ...

Rajat Singhal
źródło

Odpowiedzi:

12

Domyślnie mysqldump upuści tabelę. Powinieneś określić taką --no-create-infoopcję:

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

W ten sposób masz do czynienia tylko z wkładkami. Użycie --skip-extended-insertspowoduje wstawienie jednego wiersza na raz. Pomaga to w rozwiązywaniu problemów z duplikatem, ale będziesz musiał importować w następujący sposób:

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

--forceOpcja jest wyłącznie w celu zapewnienia nieprzerwanej inserty w przypadku duplikat klucza spotykanych. W takim przypadku błąd naruszającego INSERT jest ignorowany i włączany do następnego INSERT.

RolandoMySQLDBA
źródło
czy można odzyskać dane usunięte podczas zrzutu?
Arun Kumaresh