t1、t2を保持し、他のすべてのテーブルを削除したいと思います。
2881 次
2 に答える
7
を使用してテーブル名を検索したり、結果を一連のステートメントinformation_schema
としてフォーマットしたりすることもできます。DROP
SELECT CONCAT('DROP TABLE ', TABLE_NAME, '; ')
FROM information_schema.tables
WHERE table_schema = DATABASE() AND table_name NOT IN ('foo', 'bar', 'baz');
(このDATABASE()
関数は、現在use
の'dデータベースを返します。)
とを使用するPREPARE
とEXECUTE
、コピー&ペーストを回避することもでき、(MySQL 5.0.13以降では)これを行うためのストアドプロシージャを作成できます。
于 2009-09-21T12:59:10.143 に答える
1
mysqldumpを使用して、DROP TABLEステートメントのリストを生成し、不要なステートメントをフィルターで除外してから、それをmysqlクライアントにパイプで戻すことができます。これが私たちがそれを構築する方法です
まず、データベースのDROPTABLEテーブルステートメントのリストを次に示します。
mysqldump -uUSERNAME -pPASSWORD--add-drop-table --no-data DATABASE| \
grep ^DROP
これで、grepを介して-vを使用して一致を反転できます。保持しているテーブルについて言及していないステートメントが必要です(これを行う別の方法は、mysqldumpの--ignore-tableオプションです)。
mysqldump -uUSERNAME -pPASSWORD--add-drop-table --no-data DATABASE| \
grep ^DROP |
grep -v 'foo\|bar'
最後に、自信がついたら、それをmysqlにパイプで戻すことができます
mysqldump -uUSERNAME -pPASSWORD--add-drop-table --no-data DATABASE| \
grep ^DROP | \
grep -v 'foo\|bar' | \
mysql -uUSERNAME -pPASSWORD DATABASE
于 2009-09-21T13:00:45.660 に答える