4

こんにちは、mysql 管理者を使用して、バックアップ ファイル (backup.sql) を復元しました。データなしで構造を復元したいのですが、そうするオプションがありません。phpadminがこれを提供していることを理解しています。しかし、私はこれを使用することはできません。どなたか簡単に教えて頂けないでしょうか?

4

6 に答える 6

6

データベース構造のみをダンプします。

cat backup.sql | grep -v ^INSERT | mysql -u $USER -p

これにより、テーブルに入力されたINSERT行を除いて、backup.sqlファイル内のすべてが実行されます。これを実行すると、元のデータベースにあったストアドプロシージャ/ビューなどとともに、完全なテーブル構造が得られるはずですが、テーブルはすべて空になります。

于 2010-11-24T17:38:27.627 に答える
1

sed を使用して、ダンプ内の ENGINE を BLACKHOLE に変更できます。

cat backup.sql | sed 's/ENGINE=(MYISAM|INNODB)/ENGINE=BLACKHOLE/g' > backup2.sql

このエンジンは INSERT ステートメントを「飲み込む」だけで、テーブルは空のままになります。もちろん、次を使用してエンジンを再度変更する必要があります。

ALTER TABLE `mytable` ENGINE=MYISAM;
于 2011-10-02T14:05:20.113 に答える
0

INSERT コマンドをスキップするように mysql クライアントに指示する方法はありません。これを行うための最も手間のかからない方法は、スクリプトをそのまま実行し、データをロードしてから、すべてのテーブルを TRUNCATE することです。

于 2009-09-29T18:53:04.070 に答える
0

次のことを行うスクリプトを作成できます。

1 : ダンプを新しいデータベースにインポートします。

2 : すべてのテーブルをループで切り捨てます。

3 : データベースを再度エクスポートします。

4 : これで構造ができました

于 2009-09-29T18:53:27.440 に答える
0

IIRC backup.sql ファイル (mysqldump によって作成された場合) は、テキスト ファイル内の単なる SQL コマンドです。ファイルの先頭からすべての「create ...」ステートメントをコピーして貼り付けますが、「insert」ステートメントは別のファイルにコピーして貼り付けず、「mysql < newfile」と入力すると、データのない空のデータベースが作成されます。

于 2009-09-29T17:24:28.680 に答える