0

データベース内のすべてのテーブルとそのすべてのデータを保持する mysqldump で作成された mysql ダンプがあります。ただし、2 つのテーブルのみを復元したいと考えています。(それらkittensを呼び出してみましょうkittens_votes

データベース全体を復元せずに、これら 2 つのテーブルを復元するにはどうすればよいでしょうか?

4

5 に答える 5

2

さて、あなたには3つの主な選択肢があります。

  1. バックアップされたテーブルに関連するファイル内の SQL ステートメントを手動で検索し、それらを手動でコピーできます。これには単純であるという利点がありますが、大規模なバックアップの場合は実用的ではありません。

  2. データベースを一時データベースに復元します。基本的には、新しいデータベースを作成し、そのデータベースに復元してから、そこから古いデータベースにデータをコピーします。これは、単一データベースのバックアップを行っている場合にのみうまく機能します (CREATE DATABASEバックアップ ファイルにコマンドがない場合)。

  3. データベースを新しいデータベース サーバーに復元し、そこからコピーします。これは、単一データベースのバックアップではなく、完全なサーバー バックアップを作成する場合に適しています。

どちらを選択するかは、正確な状況 (データの量など) によって異なります...

于 2011-01-04T14:59:08.013 に答える
1

たとえば、正規表現を使用してCREATE TABLE kittens|kitten_votesANDを解析し、これらのステートメントのみを実行できます。INSERT INTO ...私の知る限り、ダンプから「部分的に復元」する方法は他にありません。

于 2011-01-04T14:53:42.930 に答える
1

.sql ファイルを開き、必要なテーブルの挿入ステートメントをコピーします。

于 2011-01-04T14:54:30.897 に答える
0

これらの 2 つのテーブルのみにアクセスできる新しいユーザーを作成します。失敗したステートメントを無視し、許可されているステートメントのみを実行する -f (強制) オプションを使用して DB を復元します。

于 2011-01-05T06:41:29.497 に答える
0

あなたが望むのは「単一テーブルの復元」です

http://hashmysql.org/wiki/Single_table_restore

いくつかのオプションが上に概説されています...しかし、私のために働いたものは次のとおりです:

  • 新しい DB を作成する

$ mysql -u root -p CREATE DATABASE temp_db

  • .sql ファイル (目的のテーブルを含むファイル) を新しい DB に挿入します。

$ mysql -u root -p temp_db < ~/full/path/to/your_database_file.sql

  • 目的のテーブルをダンプします

$ mysqldump -u root -p temp_db awesome_single_table > ~/awesome_single_table.sql

  • 目的のテーブルをインポートする

$ mysql -u root -p original_database < ~/awesome_single_table.sql

次に、temp_db を削除すると、すべてゴールデンになります。

于 2012-10-12T16:04:10.717 に答える