1. Qiita
  2. Items
  3. MySQL

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

  • 0
    Like
  • 0
    Comment

    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 としてコピーできる)