1

ダンプされたデータベースを復元する必要がありますが、テーブル内の既存の行を破棄しません。

ダンプするには、次を使用します。

mysqldump -u root --password --databases mydatabase > C:\mydatabase.sql

復元するには、mysqlコマンドを使用しませ。これは、既存のすべての行を破棄するためですが、代わりにmysqlimportがトリックを実行する必要があります。しかし、どのように?ランニング:

mysqlimport -u root -p mydatabase c:\mydatabase.sql

「テーブルmydatabase.mydatabaseは存在しません」と表示されます。なぜテーブルを探すのですか?既存のテーブルの既存の行を破棄せずに、データベース全体でダンプを復元するにはどうすればよいですか?mysqlimportが必要な場合は、単一のテーブルをダンプできます。

何をすべきか?

4

3 に答える 3

2

既存の行を踏みつけることに関心がある場合は、次のようにmysqldumpする必要があります。

MYSQLDUMP_OPTIONS="--no-create-info --skip-extended-insert"
mysqldump -uroot --ppassword ${MYSQLDUMP_OPTIONS} --databases mydatabase > C:\mydatabase.sql

これにより、次のことが行われます。

  • CREATE TABLEステートメントを削除し、INSERTのみを使用してください。
  • 一度に1行だけ挿入します。これは、重複するキーを持つ行を軽減するのに役立ちます

このようにmysqldumpを実行すると、次のようにインポートできます。

mysql -uroot -p --force -Dtargetdb < c:\mydatabase.sql

試してみる !!!

警告:でダンプする--skip-extended-insertと、mysqldumpが非常に大きくなりますが、少なくとも、実行される各複製を1つずつ制御できます。これにより、mysqldumpのリロードが実行される時間も長くなります。

于 2013-01-29T20:56:03.453 に答える
1

mydatabase.sqlファイルをテキストエディターで編集し、テーブルの削除または行の削除を参照する行を削除してから、通常どおりmysqlコマンドを使用してファイルを手動でインポートします。

mysql -u username -p databasename < mydatabase.sql

mysqlimportコマンドは、直接データベースダンプではなく、mysqlコマンドで作成されたダンプ用に設計されています。SELECT INTO OUTFILE

于 2013-01-29T20:56:41.857 に答える
0

これは、あなたが説明しているよりもはるかに複雑なようです。

説明した方法でバックアップを実行すると、データベースにすべてのレコードが含まれます。次に、データベースから既存の行を削除してバックアップからロードしたくないと言いますか?なんで?バックアップファイル(mysqldumpからの出力)にdrop and create tableコマンドが含まれている理由は、データのコピーが2つになってしまわないようにするためです。

正しい答えは、mysqlクライアントを使用してmysqldump出力ファイルをロードすることです。それをしたくない場合は、より良い答えを得る理由を説明する必要があります。

于 2013-01-29T20:59:30.777 に答える