使用SchemaSpy逆向工程生成数据库依赖关系
使用SchemaSpy工具可以快速的从数据库中得到表的依赖关系,同时生成一个生动的“表图”结合的报告。方便快速了解数据库中的数据库对象间关系,类似于PowerDesigner和Toad Data Modeler反向工程得到的结果。但是导出比PowerDesigner更加美观和漂亮。HTML格式报告的交互查询功能非常的方便,更值得称赞的是该工具是使用JAVA编写的开源软件。
通过这个小文儿向大家展示一下这个开源工具的使用方法和强大魅力。
1.必须的软件1)JDK下载,因为是JAVA程序,所以JDK是必须的。版本最好是1.6或者以上
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
这里我的目的是连接Db2数据库,所以需要DB2的db2jcc.jar,此jar包可以在db2的安装路径中找到。如果只安装了连接db2的客户端,则需要category db.
2.使用方法1)基本命令语法
java -jar schemaSpy.jar -t dbType -db dbName [-s schema] -u user [-p password] -o outputDir
2)具体使用:
java -jar schemaSpy_5.0.0.jar -t db2net -db ITM -host itmdb1.cn.ibm.com -u user -p user -port 50000 -dp C:\Program Files\schemaSpyGUI20090302\db2jcc.jar -o output -s itmuser
3使用到的参数详解java -jar schemaSpy_5.0.0.jar 调用schemaSpy的jar包
-t orathin 表明连接的是Oracle数据库
-db secooler 数据库的名字,这里可以指定为Oracle的实例名字
-host 主机名,因为是远程操作,这里我指定的是主机的IP地址。如果是连接本地可以指定为“localhost”
-u sec 连接到数据库的用户名
-p sec 连接到的数据库的密码
-port 连接端口号
-dp 指定jdbc的路径
-o 在命令执行的当前路径下生成一个名为output 的文件夹,用来保存生成的报告文件
-s SEC 对itmuser这个Schema进行报告生成
-hq 生成高品质的图片,也可以使用“-lq”选项生成低品质图片,这样可以节省一些空间。
更多命令选项参考
4.查看生成的报告直接双击Schema_SEC目录中的index.html文件即可得到报告全貌。
演示报告请参见http://schemaspy.sourceforge.net/sample/index.html,这个页面真实的体现了SchemaSpy工具的强大魅力。
5.简化操作==使用图形化工具图形化的工具下载地址如下,慢慢体验吧。
http://www.joachim-uhl.de/projekte/schemaspygui/
6.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