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 文字列はそのままエクセルにペーストできるので何かと便利
(こんなことをしないでも Sequel Pro とかでクエリ結果を CTRL + C すると TSV としてコピーできる)