質問: MySQLの`DROP TABLE`は`DROP TABLE TABLE1 TABLE2`のように列挙することでまとめて削除できますが、全て削除したい、または正規表現で指定して削除するための方法を共有します。 テーブル例 ``` データベース名:test_database テーブル: table_2012 table_2012_test1 table_2012_test2 table_2013 table_2014 table_2014_test1 table_2015 ``` testとついているテーブルだけを削除したいとします。 削除対象 ``` データベース名:test_database テーブル: table_2012_test1 table_2012_test2 table_2014_test1 ```
回答: Linux環境のみとなりますが、テーブル名の一覧を取得し、`egrep`で正規表現による絞り込みを行い、`xargs`で対象テーブルを渡すことで実現できました。 ``` 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 @@" ``` 危険な操作なので、参考URLに倣ってechoでコンソール表示するだけにしてあります。 実際にテーブルを削除する際はコマンド内の`echo`を削除して実行してください。 全てのテーブルを削除する際は、`egrep`のパイプは不要です。 参考URL: