it-swarm.dev

mysqldump with INSERT ... ON DUPLICATE

Chcę scalić dane z jednej bazy danych do drugiej. Więc tworzę zrzut z mysqldump, a następnie importuję go do innej bazy danych (o tej samej strukturze tabel). W tym przypadku nie mam żadnych problemów (takich jak zduplikowane wpisy lub coś innego).

Ale wykonuję kilka fuzji w celach testowych, a później dokonam ostatecznego scalenia. Chcę więc wykonać scalenie (dane mogą ulec zmianie) kilka razy. Zauważ, że moje wiersze w moich tabelach nigdy nie są usuwane, można je tylko wstawiać lub aktualizować.

Czy mogę utworzyć mysqldump z opcją ON DUPLICATE? A może mogę scalić zrzut, który wstawia nowe dane i aktualizuje zmodyfikowane dane?

Jasne, mogę wstawić ON DUPLICATE in dump manualnie, ale chcę zautomatyzować proces scalania.

22
Xupypr MV

Istnieją opcje, które mogą Ci w tym pomóc:

  --insert-ignore     Insert rows with INSERT IGNORE.
  --replace           Use REPLACE INTO instead of INSERT INTO.
  -t, --no-create-info
                      Don't write table creation info.

Pamiętaj o tym paradygmacie

  • mysqldump wszystko od DB1 do DUMP1
  • załaduj DUMP1 do DB3
  • mysqldump wszystko z DB2 za pomocą --replace (lub --insert-ignore) i --no-create-info do DUMP2
  • załaduj DUMP2 do DB3
37
RolandoMySQLDBA