Edited at

MySQL のテーブルカラム情報を TSV で取得する

More than 1 year has passed since last update.

MySQL は DB スキーマに関する情報を information_schema DB から参照でき、カラムに関する情報は columns テーブルから参照できます。

なので、例えば以下のようなクエリでカラムに関する情報を一覧して取得できます。

SELECT *

FROM `information_schema`.`columns`
WHERE `table_schema` = "任意DB名"
AND `table_name` = "任意テーブル名";

このクエリでは以下のような情報を取得できます。

必要に応じて SELECT に指定するといいと思います。

(よく使いそうなフィールドだけ太字にしました)


  • TABLE_CATALOG

  • TABLE_SCHEMA: DB名

  • TABLE_NAME: テーブル名

  • COLUMN_NAME: カラム名

  • ORDINAL_POSITION: スキーマ上のカラム位置

  • COLUMN_DEFAULT: デフォルト値

  • IS_NULLABLE: NULL許容

  • DATA_TYPE: データ型

  • CHARACTER_MAXIMUM_LENGTH: 最大長

  • CHARACTER_OCTET_LENGTH

  • NUMERIC_PRECISION

  • NUMERIC_SCALE

  • DATETIME_PRECISION

  • CHARACTER_SET_NAME

  • COLLATION_NAME

  • COLUMN_TYPE

  • COLUMN_KEY

  • EXTRA

  • PRIVILEGES: 権限

  • COLUMN_COMMENT: コメント

  • GENERATION_EXPRESSION


コマンドラインで TSV として取得する

上記のクエリを使って、コマンドラインからカラム名とそのコメントを TSV で取得してみます。

mysql -B -e 'SELECT `COLUMN_NAME` ,`COLUMN_COMMENT` FROM `information_schema`.`columns` WHERE `table_schema` = "任意DB名" AND `table_name` = "任意テーブル名";'

-B は TSV で出力するためのオプションです。

実行結果 (TSV):

COLUMN_NAME COLUMN_COMMENT

id ID
name 名前
price 価格
created 作成日時

これに限った話ではないですが TSV 文字列はそのままエクセルにペーストできるので何かと便利 :ok_woman:

(こんなことをしないでも Sequel Pro とかでクエリ結果を CTRL + C すると TSV としてコピーできる)