在包含数据库的项目管理中,数据库文档是一个不可缺少的资源,一般来说,在数据库设计阶段比较普遍使用的工具是PowerDesigner,相信在项目初始阶段,稍微有点责任心的人都会去维护它 ,但随着项目的扩大和时间的推移,会有多少项目组会投入资源去更新和维护,即便是投入了资源,又有多少能保证所维护的版本是最新和正确的呢,有些事情,依靠人来解决,似乎很不靠谱。
好在有许多工具可以帮助我们来维护数据库文档,比如PowerDesigner就可以反向生成ER图。
这里向大家推荐一下SchemaSpy,它提供了从实际数据库自动生成数据库结构的最新精确视图,其安装和使用都比较简单,而且支持目前绝大多数的数据库。
界面还是比较友好的,通过SchemaSpy可以很方便的查看各个table信息,以及各个table之间的关联关系信息。
下面说一下如何使用SchemaSpy
一。安装
SchemaSpy的安装十分简单,实际上就是一个jar文件,官方下载地址:http://schemaspy.sourceforge.net/。
SchemaSpy依靠Graphviz程序库来生成数据库结构的图形视图,Graphviz的安装参考:http://hanqunfeng.iteye.com/admin/blogs/869293
二。使用
可以通过命令行来使用
- java -jar schemaSpy.jar \
- -t orathin \
- -u username \
- -p password \
- -o temp \
- -host 192.168.0.xxx \
- -port 1521 \
- -db serverID \
- -cp ojdbc14.jar
e.g.: java -jar schemaSpy_5.0.0.jar -t orathin -db GPADEV -host 10.67.255.11 -port 1521 -u username -p XXX(pw) -o d:/db/gpadb -dp
C:\opt\oracle\instantclient_11_2\ojdbc6.jar -s TCOOK
也可以通过ant来使用,这里给出在ant中的任务示例:
- <!-- schemaspy lib路径 -->
- <property name="schemaspy.lib" location="${schemaspy.home}" />
- <!-- schemaspy报告路径 -->
- <property name="schemaspy.dir" location="${reports.dir}/schemaspy" />
- <target name="schemaspy">
- <delete dir="${schemaspy.dir}" />
- <mkdir dir="${schemaspy.dir}" />
- <java jar="${schemaspy.lib}/schemaSpy_5.0.0.jar" output="${schemaspy.dir}/out.log" error="${schemaspy.dir}/error.log" fork="true" >
- <arg line="-t=orathin"/> <!-- 数据库类型,这里是oracle -->
- <arg line="-db=serverID"/> <!-- 数据库实例 -->
- <arg line="-u=username"/><!-- 用户名 -->
- <arg line="-p=password"/> <!-- 密码 -->
- <arg line="-cp=${catalina.home}/common/lib/ojdbc14.jar"/> <!-- 驱动 -->
- <arg line="-host=192.168.0.xxx"/> <!-- 数据库地址 -->
- <arg line="-port=1521"/> <!-- 端口 -->
- <arg line="-o=${schemaspy.dir}"/> <!-- 文档输出目录 -->
- <arg line="-charset=UTF-8"/> <!-- 有中文时要设置编码 -->
- </java>
- </target>
如果是使用oracle数据库,个人觉得OraSchemadoc(http://oraschemadoc.yarpen.cz/)更好一些,其功能更加丰富和完整,