MySQLで全テーブルのカラム名取得
はじめに
「カラム名だけが分かっており,それがどのテーブルに含まれるのかが不明」という状況が生じたのでその対処法をメモ.
全テーブルのカラム名を取得
$ mysql -u[ユーザ名] -p[パスワード] -D[データベース名] -e "show tables;" 2>/dev/null \ | xargs -I{} bash -c " echo -e '\n-----<< {} >>-----'; \ mysql -u[ユーザ名] -p[パスワード] -D[データベース名] -e 'desc {};' \ | perl -nle 'print [split(/\t/,\$_)]->[0]' \ | grep -v 'Field'" 2>/dev/null
すると,下のような標準出力が得られる.
-----<< テーブル名1 >>----- カラム名1 カラム名2 カラム名3 . . . -----<< テーブル名2 >>----- カラム名1 カラム名2 カラム名3 . . .