web-dev-qa-db-ja.com

インポート時のmysqlテーブルのダンプが既存のレコードを置き換えました

Mysqldumpを使用してダンプを取得しました。

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

次に、同じテーブルを持つがレコードが異なる別のデータベースにダンプをインポートしました。

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

インポートデータベースには、primary_key 1から1000までのレコードがあり、エクスポートデータベースには、5000〜10,000のレコードがありました。

しかし、インポート時に既存のレコード、つまり1〜1000が削除されました。

方法??理由??これがデフォルトの動作である場合、次回ダンプを発生させないためにダンプにどのようなオプションを与えることができるか。

9
Rajat Singhal

Mysqldumpは、デフォルトでテーブルを削除します。次のように--no-create-infoオプションを指定する必要があります。

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

こうすれば、処理する挿入だけができます。 --skip-extended-insertを使用すると、一度に1行挿入されます。これは重複する問題の処理に役立ちますが、次のようにインポートする必要があります。

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

--forceオプションは、重複するキーが検出された場合にINSERTを続行することのみを目的としています。その場合、問題のあるINSERTのエラーは無視され、次のINSERTに進みます。

11
RolandoMySQLDBA