「Schema Spy」とは?
Java製のER図生成ツールです。
JDBCドライバを使うことで、OracleやSQL Server、MySQLやPostgreSQLなど様々なDBからER図を生成することができます。
ER図の他にテーブルや制約の定義などもセットで図化されます。
全体的にスタイリッシュなデザインなので、生成したあとはニヤニヤできます。
環境
- OS:macOS High Sierra 10.13.3
- Schema Spy:v6.0.0 RC2
- Java:Version 8 Update 161
- Graphviz:2.40.1
- DB:Oracle Database 10g Release 10.2.0.5.0 - 64bit Production
セットアップ
Schema Spyのダウンロード
以下のURLからダウンロードします。
https://github.com/schemaspy/schemaspy#schemaspy-v600-rc2
現行版の5.0.0はスタイリッシュではないので、SchemaSpy v6.0.0 RC2をダウンロードします。
Java 8のインストール
Schema Spyの動作にはJavaが必要なので、インストールします。
すでにインストールしている場合は飛ばしてください。
以下のURLから[Mac OS X]をクリックし、インストーラをダウンロードします。
https://java.com/en/download/manual.jsp
.dmgファイルを実行してインストールします。
Graphvizのインストール
「Graphviz」とは、dot言語というフォーマットで書かれたテキストファイルをグラフへ変換し、画像として出力するツールです。
Schema SpyではER図の出力に使用しています。
Macの場合、Homebrewからインストールします。
$ brew install graphviz --with-librsvg --with-pango
brew install graphviz
のみだと生成時に「-Tcmapx' failed with return code 139」エラーが発生してER図が生成されません。
https://github.com/schemaspy/schemaspy/issues/33
JDBCドライバのダウンロード
「JDBCドライバ」とは、JavaアプリからDBを操作するためのミドルウェアです。
「JDBC」は「Java Database Connectivity」の略です。
ベンダごとにドライバが異なり、通常は各ベンダから配布されています。
Oracleも公式サイトで配布しており、バージョンに応じたJDBCドライバをダウンロードします。
http://www.oracle.com/technetwork/jp/database/features/jdbc/index-099275-ja.html
私の場合、Oracleがインストールされている環境にJDBCドライバが含まれていたので、そちらを使用しました。
テーブル定義・ER図の生成
ここまで来たら準備完了です。
以下のコマンドを実行すると、テーブル定義やER図が生成されます。
テーブルや列数によりますが、生成には数十秒~数分かかります。
# java -jar {schemaspy.jarのパス} -t {DBタイプ} -dp {JDBCドライバのパス} -db {DB名} -host {ホスト名} -port {ポート番号} [-s {スキーマ名}] -u {ユーザー名} [-p {パスワード}] -o {出力先パス} -gv {GraphVizのフォルダパス} -cat %
$ java -jar schemaspy-6.0.0-rc2.jar -t orathin -dp ./drivers/ojdbc14.jar -db testdb -host 192.168.10.1 -port 1521 -s TESTSCHEMA -u testuser -p testpass -o ./output -gv /usr/local/Cellar/graphviz/2.40.1 -cat %
DBタイプは「orathin」を指定します。
Oracleのポート番号は「1521」がデフォルトです。
Oracleの場合、スキーマ名を省略するとエラーになりました。
スキーマ名は大文字・小文字を区別するので注意してください。
-cat %
を付けないと「ERROR - Catalog name can't be null」エラーが発生して生成できません。
https://github.com/schemaspy/schemaspy/issues/160
テーブル定義・ER図の参照
テーブル定義などはHTML形式で出力されます。
出力先パスの直下にある「index.html」をWebブラウザで開くだけで参照できます。