Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 3 years have 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 としてコピーできる)

ymm1x
明日を今日より生きやすく。
https://sousaku-memo.net/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away