どこでも見れるメモ帳

とあるSEの備忘録。何かあれば気軽にコメントください〜

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
.
.
.

カラム名からテーブル名を探す場合は,grepすればOK.