MySQLのSQLファイルからER図をCLIで一発生成する

f:id:setouchinatsu:20190406110412p:plain

CLI一発でER図を生成できるコードを書いておきました。Githubにあげてあるので下記のようにcurl経由で実行できますよ。

curl https://raw.githubusercontent.com/setouchi/file-to-schemaspy/master/mysql.sh | bash -s -- \
-u dev \
-h database \
-p dev \
-P 3306 \
-n tmp_db \
-s ~/dev/home/file-to-schemaspy/test.sql \
-o ~/Downloads/er

各パラメータは下記のようになっています。

while getopts "u:h:p:P:n:o:s:" opt; do
case "$opt" in
u) DB_USER=$OPTARG ;;
h) DB_HOST=$OPTARG ;;
P) DB_PORT=$OPTARG ;;
p) DB_PASS=$OPTARG ;;
n) DB_NAME=$OPTARG ;;
s) SCHEMA_PATH=$OPTARG ;;
o) OUTPUT_PATH=$OPTARG ;;
esac
done

動作条件として、CREATE DATABASEとかDROP DATABASEなどなどが自由にできるMySQLデータベースがリモートなりローカルなりどっかにあり、あとはDockerもインストールされている必要があります。(データベースについてはローカルに立ち上げるもよし、Vagrantで立ち上げるもよし、Dockerで立ち上げるもよしで簡単なのでやっておこう。)

内部的にSchemaSpyを使っており、SchemaSpyがDockerで起動して処理をしています。PostgreSQLなどはそのうち作っておきます。

SQLファイルからER図を生成するツールは、MySQLWorkBentchのGUIを操作する手もあるが、手作業でER図に表示したいテーブルを持ってきたり、配置を自分で設定したりとか非常に面倒です。ShcmeSpyというCLIが存在しますが、こやつは実際に動作しているデータベースを参照するので、SQLファイルからER図を生成する場合は手動でデータベースにSQLを流し込んでから参照させなければいけず、手作業でいくつかのコマンドを実行する必要があり面倒です。

図でシステム構造の説明を求められることがあり、絵を書いたり手で図を書いたりするのが面倒だったが、SQLファイルからER図を一発で生成できるようにすれば楽に説明ができるし、SQLの整合性も担保できるので非常に良い。

参考

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA