在工作中常常会遇到升级的事情,对于不同的用户,有时所使用的数据库的表结构也会有一些不同,时间长了,往往就需要一份各版本数据库表结构的差异报告了。当你需要一份这样的报告时,你会怎么做?一个个的比较每个库的每个表,每个表的每个字段,每个字段的定义,索引……可怕啊。有没有什么好点的方法?我有一个半自动化的方法,抛砖引玉一下。
前提条件,你的机器里要有MS Visio。这个软件里,有一个[数据库——数据库模型图]的绘图类型。我就是用它来实现比较数据库表结构之间的差异的。
第一步:打开Visio,新建一个数据库——数据库模型图的文件。绘图文件打开后,选择主菜单的“数据库”-“反向工程”,这时,会弹出“反向工程向导”,从现有数据库中提取数据库架构。配置好你的数据源,就是要比较的数据库(一般是旧版数据库)。按提示,会要你输入用户名、密码的,然后就会让你选择要进行反向工程的对象类型。自己选择吧,你关心什么样的数据库结构,就选什么好了。OK,下一步,选择要进行反向工程的表和/或视图,全选好啦。再下一步,这里,问你是否要将形状添加到当前页,我建议你还是不要添加了,否,以后再添加形状。再下一步,检查一下,没问题就按完成吧。至此,源数据库的结构已经创建好了。保存一下文件吧。
第二步:在源数据库模型图文件中,选择主菜单的“数据库”—“刷新模型”。这时,会弹出“刷新模型向导”,和原来的反向工程向导基本一样,在这里,请选择你要比较的数据库(一般是新版数据库),按提示,会要你输入用户名、密码的,然后……,就开始比较当前数据库和存储在模型中的数据库映像之间的差异了。在这里,会有一个报告给你,这个报告,你即可信,也不要全信,为什么前面说是半自动化的方法呢,原因就在这,有差异,他会全部列出来,没有差异的地方,他也会列出来。OK,自己辛苦下,按这个报告的提示,咱自己一一验证,出个权威性的数据库结构差异报告吧。
好了,差异报告出来了。怎么样,比你一个个自己看,方便多了吧。
你可以按此方法,两两比较,很快,你的总报告就完成了。不过,这个方法只能比较表结构,你要是有些固化信息写在表内容里,这一招,可就不管用了。自己写语句比较吧。懒的话,就睁大眼睛慢慢看好了。
如果你有什么更好的方法,也请你告诉我,大家一起分享啊。