大家是否有这样的体验:
1、项目在本地多人开发,多次进行数据库修改操作,但忘记记录操作脚本了,现在将要升级线上程序,束手无策 2、线上执行数据库脚本较多,其中某一条出现了问题,然后就不知道了从哪里开始了,或者漏掉了其中一两条,难道要靠苦力慢慢去核对? 3、如何将备用的数据库的表结构自动修正为主库的结构,如何自动同步默认的基础表数据
所以设计一个自动检测数据库差异性并自动修复的工具显得尤为重要,解放人力,保障效率
设计思路: 1、设计一种数据结构:能够把标准库的表结构和基础数据输出 2、用这个导出的数据模版去验证待验证的数据库 3、检测工具发现差异,生成修复的sql语句自动执行或生成sql预览,审核后在执行 4、完成数据库的一致性
数据导出结构:
<?xml version="1.0" encoding="gb2312"?>
<objects>
<object name="user" type="table" time="2013-11-28 17:28:28" comment="">
<field name="id" type="varchar2(20)" comment="主键" iskey="true" />
<field name="name" type="varchar2(50)" comment="用户姓名" />
<field name="password" type="varchar2(20)" comment="密码" />
</object>
<object name="zzjgdmbview" type="view" comment="视图" time="2013-11-28 19:16:28"><![CDATA[select zzjgdm,zzjgmc,pid,'1' zzjgtype,to_char(pxzd) pxzd from zzjgdmb]]></object>
<object name="sequ_zzjgdmb" type="sequence" comment="自增序列" time="2013-11-28 19:15:28" start="1" incrementby="1" table="" key="" />
</objects>
objects:包含所有的数据对象 表、视图。序列 object:具体的数据库对象 type:数据对象的分类标识包含table(表)、view(视图)、sequence(序列) name:对象名称 time:创建时间 comment:备注
field:表中的字段属性 name:字段名 type:字段数据类型 comment:备注 isKey:是否主键
其中视图中的文本是视图的创建语句
接下来的关键工作则是怎么把数据库中的数据和表生成这种xml的数据载体: 其实这个主要就是利用数据的系统表分组就行遍历输出,没有什么特殊的 这里提供2个下载地址: 1、核心的操作类: http://download.csdn.net/detail/cx308679291/5989153
- 完整的工具源代码:http://download.csdn.net/detail/cx308679291/9914031 有什么疑问可以大家一起讨论