[mysql]テーブル定義書をhtml出力する

mysqlからテーブル定義をhtmlに出力するスクリプトを作りました。

テーブルやカラムにコメントをつけておけば、日本語説明つきのテーブル定義書になります。 テーブルを作成するときにコメントをつけるようにしておいて、このスクリプトを cron で定期的に実行すれば、勝手に最新のテーブル定義書が出来上がります。

需要がどれだけあるのかわかりませんが、コードを載せておきます。。

mysqldbdocument.sh

#!/bin/sh
## base config
MYSQL_HOME=mysql  
MYSQL_USER=root  
MYSQL_PASSWD=passwd

CSS_FILE_NAME="style.css"

## db
if [ "$1" = "" ]; then  
        DB_NAME=mysql
else  
        DB_NAME=$1
fi  
OUTPUT=$DB_NAME.html

## table
MYSQL="$MYSQL_HOME -u $MYSQL_USER -p$MYSQL_PASSWD $DB_NAME"  
TABLES=`echo "show tables;" | $MYSQL -s`

## export html
echo "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.1//EN\" \"http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd\">" > $OUTPUT  
echo "<html xmlns=\"http://www.w3.org/1999/xhtml\">" >> $OUTPUT  
echo "<head>" >> $OUTPUT  
echo "<title>Mysql DB Document : $DB_NAME</title>" >> $OUTPUT  
echo "<link rel=\"stylesheet\" href=\"$CSS_FILE_NAME\" type=\"text/css\" />" >> $OUTPUT  
echo "</head>" >> $OUTPUT  
echo "<body>" >> $OUTPUT  
echo "<h1>Mysql DB Document : $DB_NAME</h1>" >> $OUTPUT

for TABLE_NAME in $TABLES;  
do  
    TABLE_STATUS=(`echo "show table status like '$TABLE_NAME'" | $MYSQL -s`)
    echo "<h3>$TABLE_NAME : ${TABLE_STATUS[18]}</h3>" >> $OUTPUT
    echo "show full columns from $TABLE_NAME;" | $MYSQL -H >> $OUTPUT
done

echo "</body>" >> $OUTPUT  
echo "</html>" >> $OUTPUT  

MYSQLHOME, MYSQLUSER, MYSQL_PASSWD は使ってる環境に合わせて適当に変えてください。
シェル実行時に第一引数でデータベース名を指定してあげてください。指定しないと、mysqlに繋ぎます。 デフォルトはDB名でhtmlファイルが出てくるので、ファイル名を変えたければ15行目を弄ってください。 出力対象のテーブルは19行目で指定してます。デフォルトは当然全部のテーブルを対象としてます。

8行目のcssファイル指定はまぁ適当に。。

おまけ。
mysql のカラムコメントは create table 文でつけることが出来ます。

create table TABLE_NAME (  
    id INTEGER(10) primary key comment 'ID',
    data varchar(50) comment 'データ'
);

もう既にテーブルを作っちゃってる、、という場合も、altar table 文でコメントがつけれます。型指定しないといけないのが面倒ですが、、

alter table TABLE_NAME modify id INTEGER(10) comment 'ID';  
alter table TABLE_NAME modify data varchar(50) comment 'データ';  

テーブルへのコメントは、alter table 文でないとつけれません。。

alter table TABLE_NAME comment 'テーブル名';  

実践ハイパフォーマンスMySQL 第2版