LoginSignup
12
14

More than 5 years have passed since last update.

MacでスタイリッシュなER図を作成する(Oracle)

Posted at

「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ブラウザで開くだけで参照できます。

参考リンク

12
14
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
12
14