Thursday, March 12, 2009

利用SchemaSpy產生圖像化Database Schema圖表

利用SchemaSpy產生圖像化Database Schema圖表
Posted by: maxchiu on: 2009/02/01

In: 軟體應用 Comment!
Ads by Google
Export your SQL Server DB
Data and Schema Packaged Quickly for Easy Deployment. Free Trial!
Red-Gate.com/SQL_Packager




最近因為工作上的需要,需提供資料庫相關的設計資料及圖表。過去,大多使用Microsoft Office Visio來製作,但在查閱便利與友善性的考量尚,產生類似MSDN風格的HTML格式圖表,會是較佳的選擇。是故,便著手在網路上搜尋相關的工具,經一番研究後,SchemaSpy正能符合我當下的需求,且基於是開源專案,軟體授權這筆費用也省了下來。以下,大致説明一下安裝的四個步驟。

步驟一:

首先,因為SchemaSpy是個使用Java開發的工具,所以需要先下載安裝Java 5或是更新的版本。

步驟二:

接下來下載SchemaSpy至您指定的目錄,下載的檔案格式為一個jar檔,無須安裝,官網網址為http://schemaspy.sourceforge.net/。

步驟三:

由於產生的資料庫圖表,是透過Graphviz產生圖檔以及由DOT Language描述其路徑的*.dot檔,所以請下載安裝,安裝完成後請將方才安裝路徑加入系統路徑,方式如下述:

進入控制台
點選【進階】(Advanced) > 在該選項中點選【環境變數】(Environment Variables) ,如【圖一】所示。


圖一
圖二
圖三

圖四
圖五
圖六


在彈出的環境變數視窗中,位於下方的【系統變數】裡,找到名稱為”PATH”的系統變數,並點擊下方的【編輯】鍵,如【圖二】所示。
將Graphviz執行檔的路徑,即把路徑指到剛才安裝路徑下一個名為bin的檔案夾,格式如(此處以安裝Graphviz 2.21版於C磁碟下的 Program Files目錄情況為例說明):”C:\Program Files\Graphviz 2.21\bin”,可參考【圖三】所示。
步驟四:

最後由於SchemaSpy是透過JDBC與資料庫連結。是故,必須針對您目前開發環境所使用的資料庫,來決定下載的driver。以下則針對Microsoft SQL Server 2005為例說明。

首先至微軟網站下載Microsoft SQL Server 2005 JDBC Driver。在此建議下載SQL Server 2005 JDBC Driver 1.0版 或是 1.1版,因為在筆者安裝測試過程中,SQL Server 2005 JDBC 1.2版及 2.0版都發生過異常,以致無法產生圖表。是故,接下來的安裝將以1.1版進行說明。
下載的執行檔會有中文或英文之分,下載時請注意,如以1.1英文版說明:sqljdbc_1.1.1501.101_enu.exe。接下來解壓縮至C磁碟的Program Files目錄下,原因是此為SchemaSpy的初始路徑設定,此處需要注意的是,路徑中包含JDBC Driver所屬語系,以1.1英文版為例說明如:C:/Program Files/Microsoft SQL Server 2005 JDBC Driver/sqljdbc_1.1/enu/sqljdbc.jar。另外,如果下載的是中文版,將發生找不到driver的錯誤訊息,原因出在中文版的路徑是C:/Program Files/Microsoft SQL Server 2005 JDBC Driver/sqljdbc_1.1/cht/sqljdbc.jar 所致,如【圖四】所示。
此時,有兩種方式可以解決,第一、將SchemaSpy.jar檔中SQL Server 2005的屬性檔(.properties)裡的driverPath做修正即可。 第二、在執行SchemaSpy時使用 -dp參數覆蓋屬性檔設定,我先就第一種方式說明,第二種解決方法留待完成設定後,進行測試時說明。

以下使用SQL Server 2005 JDBC Driver 1.1說明:schemaSpy_4.1.1.jar\net\sourceforge\schemaspy\dbTypes\mssql05.properties,用一般的文書編輯軟體如小作家開啓,找到名為driverPath的屬性修改即可,如【圖五】所示。
最後,同步驟三,需將SQL Server 2005 JDBC Driver安裝路徑新增到【環境變數】中,唯一不同的是,此路徑需新增在”CLASSPATH”,如【圖六】所示。
上述所有的安裝步驟完成後,再來就是進行實際的測試,以下附上語法格式說明,如欲了解更為詳盡的參數說明,可逕至SchemaSpy官網:

java -jar schemaSpy.jar -t mssql05 -db <資料庫名稱> -host -s dbo -port 1433 -u <資料庫使用者名稱> -p <資料庫使用者密碼> -o <輸出目錄名稱>

如果需要覆寫SQL Server 2005 JDBC Driver路徑,也就是步驟四中提到的第二種解解方法,則需在加入-dp參數,語法格式如下:

java -jar schemaSpy.jar -t mssql05 -db <資料庫名稱> -host -s dbo -port 1433 -u <資料庫使用者名稱> -p <資料庫使用者密碼> -o <輸出目錄名稱> -dp

範例語法:

java -jar schemaSpy_4.1.1.jar -t mssql05 -db Northwind -host 127.0.0.1 -s dbo -port 1433 -u tester -p test543 -o library

P.S. 以上語法有點繁複,每次輸入似乎沒有效率,筆者建議可產生一個批次檔,使用上將方便許多。另外,可參考SchemaSpy官網所提供的結果範例,以上。

No comments: