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


9

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が削除されました。

どうやって??なぜ??これがデフォルトの動作である場合、次回ダンプを発生させないためにダンプにどのようなオプションを指定できますか。

回答:


12

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に進みます。


ダンプ中に削除されたデータを取得することは可能ですか?
アルンクマレッシュ2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.