前フリ
ScehmaSpy を使って、Oracle データベースのドキュメントの生成をしてみます。
頻繁にDBの定義が変わると、ドキュメント作成が後回しになりがち。
自動化できると便利なはず。
環境
Windows7
Java7
Oracle 11g
事前準備
ドキュメントを読む
SchemaSpy 公式サイト をまず読む。
jar を実行すればよいだけに見えますね。
また、先人の知恵もお借りします。
できる気がしてきた。
インストール
公式ドキュメントを読むと、Graphviz を利用しているとのこと。
Graphviz 公式サイト から Windows 用インストーラをダウンロードする。
graphviz-2.38.msi を使って、デフォルト設定のままインストールを実行する。
C:\Program Files (x86)\Graphviz2.38 フォルダにいろいろ入っていることを確認して、スタートメニューからのexe 起動ができることも試しておいた。
実装
プロジェクトの構成
プロジェクトの構成は以下のようにする。
プロジェクト名は「schemaspydemo」。
bin に コマンド実行ファイル(demo.bat)を格納する。
lib に jar ファイルを格納する。Oracle なので、ojdbc7.jar を格納しておく。
output は 実行結果を格納する場所として用意した。
schemaspydemo
│
├─bin
│ demo.bat
│
├─lib
│ ojdbc7.jar
│ schemaSpy_5.0.0.jar
│
└─output
demo.bat の記述
Oracle の場合は接続方法によって、 -t を変える。今回は「Oracle with Thin Driver」 で接続しているので「orathin」となる。
$始まりは各自のデータベース情報に変更する。
最小限度と思われるパラメータ設定が以下の内容となる。
(キャレットで改行している。)
java^
-jar ../lib/schemaSpy_5.0.0.jar^
-dp ../lib/ojdbc7.jar^
-t orathin^
-host $IP^
-port $PORT^
-db $SID^
-s $SCHEMA^
-u $USER^
-p $PASSWORD^
-o ../output^
-charset utf-8^
-gv "C:\Program Files (x86)\Graphviz2.38"
実行
demo.bat を実行する。
正常に実行できれば、コマンドプロンプトに以下のようなログが出てくる。
Using database properties:
[../lib/schemaSpy_5.0.0.jar]/net/sourceforge/schemaspy/dbTypes/orathin.properties
Gathering schema details...........(33sec)
Writing/graphing summary.........(1sec)
Writing/diagramming details........(0sec)
Wrote relationship details of 8 tables/views to directory '..\output' in 35 seconds.
View the results by opening ..\output\index.html
ログのとおり index.html を開けば、作成結果が確認できる。
実行後の感想
対象としたデータベースには1000以上のテーブルがあったため、出力に大変時間がかかった。
(途中で止めてしまったが、650テーブル2h程度かかっていた。)
最初のお試しは、狙ったテーブルだけにしたほうがよい。
demo.txt に「 -i "tableNamesRegex"」を使うと対象が絞れる。
また、view のドキュメント作成が不要であれば 「-noviews」 を使うとよい。
テーブルごとにレコード数(Rows)が出力されているが、出力しないようにするパラメータ「-norows」があるので
このパラメータを入れると、件数取得しない分だけ早くなるかもしれない。
お手軽にHTMLが出力できた。
今回を基礎編として、次回は XLS 出力か差分出力かを試してみる。