【SchemaSpy】使用SchemaSpy開源工具生成資料庫報告

secooler發表於2009-11-10
使用SchemaSpy工具可以快速的從資料庫中得到表的依賴關係,同時生成一個生動的“表圖”結合的報告。方便快速瞭解資料庫中的資料庫物件間關係,類似於Erwin和PowerDesigner反向工程得到的結果。HTML格式報告的互動查詢功能非常的方便,更值得稱讚的是該工具是使用JAVA編寫的開源軟體。

通過這個小文兒向大家展示一下這個開源工具的使用方法和強大魅力。

1.下載必要的軟體
1)JDK下載,因為是JAVA程式,所以JDK是必須的。
http://java.sun.com/javase/downloads/index.jsp
2)SchemaSpy下載。
http://sourceforge.net/projects/schemaspy/files/
3)Graphviz下載,SchemaSpy工具需要使用Graphviz工具中的dot程式繪製表間關係的圖片。
http://www.graphviz.org/Download_windows.php
4)JDBC
這裡我的目的是連線Oracle資料庫,所以需要Oracle的ojdbc14.jar,此jar包可以在Oracle的C:\oracle\product\10.2.0\db_1\jdbc\lib\目錄下得到。

2.使用方法
1)基本命令語法
java -jar schemaSpy.jar -t dbType -db dbName [-s schema] -u user [-p password] -o outputDir

2)
實操一下,選項比較多,不要眨眼
E:\software\Graphviz>java -jar schemaSpy_4.1.1.jar -t orathin -db secooler -host 10.17.192.100 -u sec -p sec -port 1521 -dp C:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar -o Schema_SEC -s SEC -hq
Using database properties:
    [schemaSpy_4.1.1.jar]/net/sourceforge/schemaspy/dbTypes/orathin.properties
Connected to Oracle - Oracle Database 10g Enterprise Edition Release 10.2.0.3.0 - 64bit Production
With the Partitioning and Data Mining options

Gathering schema details..............................................
................................................................(8sec)
-- 這裡省略N多提示資訊 --
Wrote relationship details of 178 tables/views to directory '
Schema_SEC' in 161 seconds.
View the results by opening Schema_SEC\index.html

3)使用到的引數詳解
java -jar schemaSpy_4.1.1.jar  呼叫schemaSpy的jar包
-t orathin 表明連線的是Oracle資料庫
-db secooler  資料庫的名字,這裡可以指定為Oracle的例項名字
-host 10.17.192.100 主機名,因為是遠端操作,這裡我指定的是主機的IP地址。如果是連線本地可以指定為“localhost”
-u sec 連線到Oracle資料庫的使用者名稱
-p sec 連線到的Oracle資料庫的密碼
-port 1521 連線埠號,Oracle的預設埠號是1521
-dp C:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar 指定jdbc的路徑
-o Schema_SEC 在命令執行的當前路徑下生成一個名為Schema_SEC的資料夾,用來儲存生成的報告檔案
-s SEC 對SEC這個Schema進行報告生成
-hq 生成高品質的圖片,也可以使用“-lq”選項生成低品質圖片,這樣可以節省一些空間。
更多命令選項參考

3.檢視生成的報告
直接雙擊Schema_SEC目錄中的index.html檔案即可得到報告全貌。
演示報告請參見http://schemaspy.sourceforge.net/sample/index.html,這個頁面真實的體現了SchemaSpy工具的強大魅力。
這裡簡單截一張樣例“Relationships”,給大家一個感性的認識(以您自己生成的結果為準,那樣會更真實,更讓人感動)。

chemaSpy Analysis of library - All Relationships Generated by
SchemaSpy
Generated by SchemaSpy on Fri Sep 19 16:48 MDT 2008
Legend: SourceForge.net
Primary key columns
Columns with indexes
Excluded column relationships
Dashed lines show implied relationships
< n > number of related tables
 
Implied relationships All columns
   
4.簡化操作的兩種方法
如果您對命令列操作感到比較的不便,有兩種手段可以相對簡化執行過程。
1)在Windows下編寫一個簡單的bat批處理檔案,以後就可以直接雙擊來完成這個過程了。
C:\>type SchemaSpy_Auto.bat
set Path="C:\Program Files\Graphviz2.24\bin";%Path%
java -jar schemaSpy_4.1.1.jar -t orathin -db secooler -host 10.17.192.100 -u sec -p sec -port 1521 -dp C:\oracle\product\10.2.0\db_1\jdbc\lib\ojdbc14.jar -o Schema_SEC -s SEC -hq

2)使用定製好的圖形化操作工具
圖形化的工具下載地址如下,慢慢體驗吧。
http://www.joachim-uhl.de/projekte/schemaspygui/

5.SchemaSpy工具還支援哪些資料型別?
使用“-dbhelp”選項檢視schemaSpy_4.1.1.jar這個版本支援的資料庫型別
E:\software\Graphviz>java -jar schemaSpy_4.1.1.jar -dbhelp
命令結果省略,簡單列一下支援資料庫的型別如下,基本上所有主流的資料庫都支援了。
Type         Description
db2          IBM DB2 with 'app' Driver
db2net       IBM DB2 with 'net' Driver
derby        Derby (JavaDB) Embedded Server
derbynet     Derby (JavaDB) Network Server
firebird     Firebird
hsqldb       HSQLDB Server
informix     Informix
maxdb        MaxDB
mssql        Microsoft SQL Server
mssql05      Microsoft SQL Server 2005
mssql-jtds   Microsoft SQL Server with jTDS Driver
mssql05-jtds Microsoft SQL Server 2005 with jTDS Driver
mysql        MySQL
ora          Oracle with OCI8 Driver
orathin      Oracle with Thin Driver
pgsql        PostgreSQL
sybase       Sybase Server with JDBC3 Driver
sybase2      Sybase Server with JDBC2 Driver
udbt4        DB2 UDB Type 4 Driver

6.小結
反向生成ER模型的工具很多,如Erwin、PowerDesigner和Toad Data Modeler等,但價格都不菲,並且這些工具更加側重在資料庫的設計,重點不在展示。因此SchemaSpy這個開源工具就派上了用場,在得到表間一級和二級關聯關係上面,SchemaSpy工具很有優勢,既實用又便捷。
SchemaSpy的另外一個優點就是,她可以隨時獲得資料庫的最新動態,這樣就保證了文件的及時性和準確性。

-- The End --

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/519536/viewspace-619349/,如需轉載,請註明出處,否則將追究法律責任。

相關文章