概要
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の構造解説ページみたいなものが作りやすくなるだろう。
ダブルクオーテーションがくっついていて邪魔なのでそのうち改良したい。
以下解説
おおまかに下記流れで処理をしている。
- mysqlの
show full columns
を利用してテーブル構造をTSV形式で持ってくる。 - 持ってきたデータをスクリプトに食わせて、整形、マークダウン形式にする。
テーブルの構造情報を引っ張ってくるには下記二通りの方法がある。
- information_scheme
- show full columns
テーブルに登録されたコメントも含めて取ってくるには、後者でしか出来なかったため、今回はshow full columns
を使用した。
おそらくinformation_scheme
を使うほうがスクリプトが書きやすくなるはず。
そのうちそのちらのバージョンの方についても記事にまとめる。