2011年11月20日日曜日

MySQLのテーブルを一括削除するワンライナー

モデル定義からテーブルを自動生成できるフレームワークでガチャガチャやってると、
外部キー制約とかに引っかかってうまく消えなくなったりする。

無理やり片っ端から消すワンライナー。
mysql -Br -u【ユーザ名】 -p【パスワード】 【スキーマ名】 -e "show tables;" | tail -n +2 | xargs -i{} mysql -u【ユーザ名】 -p【パスワード】 【スキーマ名】 -e "SET FOREIGN_KEY_CHECKS=0; drop table {};"

バッチモードで実行することで枠線なし、tailの行数を+2指定する事で「Tables_of_【スキーマ名】」の行を削り取る。
あとは外部キー制約外し→drop tableのコンボをひたすら叩き込む。

必要であればtailとxargsの間でgrepとかで必要なテーブルのみに絞り込む。
(というか絞り込まないんだったらdrop databaseでいいじゃんって話ではある)

0 件のコメント:

コメントを投稿