通过这个小文儿向大家展示一下这个开源工具的使用方法和强大魅力。
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/db*/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 |
| |||||||||
Implied relationships All columns |
如果您对命令行操作感到比较的不便,有两种手段可以相对简化执行过程。
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 --