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 という文字が入ってあんまり嬉しくない!><
ということを考えていたらこんな時間なので、とりあえずここら辺で。