web-dev-qa-db-ja.com

mysqldumpとINSERT ... ON DUPLICATE

データベース間でデータをマージしたい。そこで、mysqldumpを使用してダンプを作成し、それを別のデータベース(同じテーブル構造)にインポートします。この場合、問題はありません(エントリの重複など)。

しかし、私はテスト目的でいくつかのマージを行い、後で最終的なマージを行います。そこで、マージ(データが変更される可能性があります)を数回実行したいと思います。テーブルの行が削除されることはなく、挿入または更新のみが可能です。

ON DUPLICATEオプションでmysqldumpを作成できますか?または、新しいデータを挿入して変更されたデータを更新するダンプをマージできるのでしょうか?

確かに、私はON DUPLICATEダンプを手動で行いますが、マージプロセスを自動化したいと思います。

22
Xupypr MV

これに役立つオプションがあります:

  --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.

このパラダイムを覚えておいてください

  • mysqldumpすべてをDB1からDUMP1に
  • dUMP1をDB3にロードする
  • mysqldumpは--replace(または--insert-ignore)および--no-create-infoを使用してDB2からすべてをDUMP2に保存します
  • dUMP2をDB3にロードする
37
RolandoMySQLDBA