LoginSignup
7
7

More than 5 years have passed since last update.

コメントも含めてDB構造をマークダウン形式で取得する

Last updated at Posted at 2016-08-31

概要

DBの構造を文書化したい時、マークダウン形式でカラム名とそのコメントがあると追記しやすくなる。
MySQL DBからテーブル名とカラム名をマークダウン形式にして引っこ抜いてくる手法について記載する


結論

下記スクリプトとそれを使用したコマンドでマークダウン形式の文書が手に入る。

コマンド

mysql -u [username] -p -D [database_name] -e "show full columns from [table_name];" | ruby ./convert_db_structure_to_markdown.rb

rubyスクリプト

convert_db_structure_to_markdown.rb
require'pp'

convert_array = []

STDIN.read.each_line do|line|
  convert_array.push(line.gsub(',','').gsub(/\t/,',').chomp)
end


convert_array.delete_at(0)
convert_array.delete_at(0)

convert_array.each do |str|

  arr = str.split(',')
  pp''
  pp " - #{arr[0]}"
  if arr.count>8
  pp''
    pp "#{arr[8]}"
  end
  pp''

end

結果例

""
" - id"
""
""
" - member_id"
""
""
"メンバーのユニークID"
""
""
" - start_date"
""
"課金開始日"
""
""
" - expire_date"
""
"期限切れに成る日"
""
""
" - del_flg"
""
""
" - created"
""
""
" - updated"
""

それなりにそれっぽいものが出来た。
これをwikiか何かに貼り付ければ、既存のコメントも含めたDBの構造解説ページみたいなものが作りやすくなるだろう。
ダブルクオーテーションがくっついていて邪魔なのでそのうち改良したい。


以下解説

おおまかに下記流れで処理をしている。

  1. mysqlのshow full columnsを利用してテーブル構造をTSV形式で持ってくる。
  2. 持ってきたデータをスクリプトに食わせて、整形、マークダウン形式にする。

テーブルの構造情報を引っ張ってくるには下記二通りの方法がある。

  • information_scheme
  • show full columns

テーブルに登録されたコメントも含めて取ってくるには、後者でしか出来なかったため、今回はshow full columnsを使用した。
おそらくinformation_schemeを使うほうがスクリプトが書きやすくなるはず。
そのうちそのちらのバージョンの方についても記事にまとめる。

7
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
7