11981


MySQLの`DROP TABLE`は`DROP TABLE TABLE1
TABLE2`のように列挙することでまとめて削除できますが、全て削除したい、または正規表現で指定して削除するための方法を共有します。

テーブル例

[code]

    データベース名：test_database
    テーブル：
        table_2012
        table_2012_test1
        table_2012_test2
        table_2013
        table_2014
        table_2014_test1
        table_2015
    
[/code]

testとついているテーブルだけを削除したいとします。

削除対象

[code]

    データベース名：test_database
    テーブル：
        table_2012_test1
        table_2012_test2
        table_2014_test1
    
[/code]


CC BY-SA 3.0
2015-07-03T01:27:19.627
11980
2015-07-03T01:27:19.627
7214
question
mysql
MySQLでテーブルを全て、または正規表現で指定して削除する方法


Linux環境のみとなりますが、テーブル名の一覧を取得し、`egrep`で正規表現による絞り込みを行い、`xargs`で対象テーブルを渡すことで実現できました。

[code]

    mysql -h ホスト名 -u ユーザ名 -pパスワード -D test_database -e "show tables" -s | egrep "test" | xargs -I "@@" echo mysql -h ホスト名 -u ユーザ名 -pパスワード -D test_database -e "DROP TABLE @@"
    
[/code]

危険な操作なので、参考URLに倣ってechoでコンソール表示するだけにしてあります。  
実際にテーブルを削除する際はコマンド内の`echo`を削除して実行してください。

全てのテーブルを削除する際は、`egrep`のパイプは不要です。

参考URL：<https://stackoverflow.com/questions/456751/drop-mysql-databases-
matching-some-wildcard>


CC BY-SA 3.0
2015-07-03T01:27:19.627
11981
2015-07-03T01:27:19.627
2017-05-23T12:38:55.250
-1
7214
11980
answer