塩焼きブログ

塩焼きに関しての研究内容を公開しています

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の整合性も担保できるので非常に良い。

参考