すがブロ

sugamasaoのhatenablogだよ

MySQLのテーブル一覧を取得するスクリプト

知ってる人は当然のように使うけれど

普段シェルを使わないのでスッと書けなかったのだけど、ようやっと覚えられた気がする。
以下、MySQLワンライナーで接続して、データベース一覧を取得、そのデータベース一つずつからさらにテーブルを一覧にするスクリプト
ロジックという程のこともなくて、ようは MySQL の -e オプションでの実行結果をシェル内部でこんな風に使えちゃうよーという話。
※このMySQLは root ユーザにパスワードを設定していないという気狂いな設定なので、パスワードを設定している人は適宜 -p オプションを使ってね!

for DATABASE in `mysql -uroot -N -s -e"show databases;"`; do
        echo "[$DATABASE table]"
        for TABLE in `mysql -uroot -N -s -e"show tables in $DATABASE"`; do
                echo $TABLE
        done;
done;

これを応用すれば(ダサい気がするけど)テーブルを一つずつドロップするとかシェルからできるね。
あと、 show create table とかでテーブル定義文を抜き出すとかもできちゃうかな。

for DATABASE in `mysql -uroot -N -s -e"show databases;"`; do
        echo "[$DATABASE table]"
        for TABLE in `mysql -uroot -N -s -e"show tables in $DATABASE"`; do
                echo `mysql -uroot -N -s -e"show create table $DATABASE.$TABLE"`
        done;
done;

こんな感じかなぁ。でもこれだと本来改行があるところに \n という文字が入ってあんまり嬉しくない!><
ということを考えていたらこんな時間なので、とりあえずここら辺で。