“t1、b2以外のテーブルを削除する”のようなものを実装するためのMySQLコマンドはありますか?

mysql sql-drop

私はt1、t2を維持し、他のすべてのテーブルを削除したいです。

  1  0


ベストアンサー

テーブル名を見つけるために information_schema`を使うことができ、結果を DROP`ステートメントの束としてフォーマットすることさえできます。

SELECT CONCAT( 'DROP TABLE'、TABLE_NAME、 ';')from information_schema.tablesどこtable_schema = DATABASE()AND table_name NOT IN( 'foo'、 'bar'、 'baz');

( `DATABASE()`関数は現在 `use`されているデータベースを返します。)

PREPARE`と EXECUTE`を使うと、コピーを避けることさえできます

7


mysqldumpを使用してDROP TABLEステートメントのリストを生成し、不要なものを除外してからmysqlクライアントにパイプバックすることができます。 これがどうやってそれを作り上げるかです。

まず、データベース用のDROP TABLEテーブルステートメントのリストです。

mysqldump -uUSERNAME -pPASSWORD  - 追加 - ドロップ - テーブル - なし - データ\ grep ^ DROP

これで、grepを介して-vを使用して一致を反転することができます。保持しているテーブルについて言及していないステートメントが必要です(これを行う別の方法は、mysqldumpの—​ignore-tableオプションです)。

mysqldump -uUSERNAME -pPASSWORD  - 追加 - ドロップ - テーブル - なし - データ\ grep ^ DROP | grep -v 'foo \ | bar'

最後に、確信が持てば、それをmysqlにパイプで戻すことができます。

mysqldump -uUSERNAME -pPASSWORD  - 追加 - ドロップ - テーブル - なし - データ\ grep ^ DROP | \ grep -v 'foo \ | bar' | \ mysql -uUSERNAME -pPASSWORDデータベース

1


タイトルとURLをコピーしました