D瓜哥的开源项目:CompareDatamodel
今天在Github上发布了一个开源的数据库模型对比工具:CompareDatamodel。写篇文章做个说明。希望对需要使用的朋友有所帮助。
其实这个项目,早在今年三月份就开发完了。当时,创建这个项目也是缘于”工作所迫”。鉴于我们在进行项目实施时,经常需要对比新旧模型的差异。而且,这些工作繁琐,极易出错。需要特别小心。所以,开发了这个工具,帮我们完成这个工作。
另外,说明一下,这个工具刚刚开发完成。D瓜哥也只是做了小范围的测试。所以,难免有不完善的地方。如有问题,请及时反馈。以便于D瓜哥进行更正。
处理过程
- 首先从数据库中查找新旧模型各自所拥有的表。
- 然后,依次对比各个表名。把表分为三类:
- 新模型独有的;
- 旧模型独有的;
- 新旧模型共有的
将这三种表同时存储的到三个不同的文件中。
- 再然后,对比新旧模型共有的表,再对列名,数据类型,长度以及精度(如果没有精度,比如varchar2等,则按0进行处理)比较。分为两类:
- 完全一样的,这个存储的一个文件中;
- 新旧模型有差异的,这类也存储到一个文件中,同时记录新旧模型的差异。
使用说明
将下载到某个目录(为了防止不必要的错误出现,请注意这个目录的完整路径不包含中文以及空格。)下,然后打开config/config.txt,对其连接数据库的信息进行配置。需要配置的配置项如下:
#对比结果文件的输出目录。 result_output_directory|D://TclWS #存放结构(列名、类型、长度以及精度)完全一样的表名的文件 fields_same_table_file|fields_same_table.txt #存放结构(列名、类型、长度以及精度)有差异的表名的文件 fields_diff_table_file|fields_diff_table.txt #########数据库连接信息########### #旧数据库的链接信息(注意:sid必须是在Oracle Client配置的服务名) old_db_sid|LOCAL_ORCL old_db_user|scott old_db_password|tiger #新数据库的链接信息(注意:sid必须是在Oracle Client配置的服务名) new_db_sid|LOCAL_ORCL new_db_user|hr new_db_password|hr
注意:中间的竖线不要删除!否则会报错。
配置完成中,打开命令提示符(或者UNIX/Linux的终端),跳转到src目录中。然后,输入如下指令,开始运行:
tclsh compare-oracle.tcl
当看到:
OK! Please see the result in the output files. The files is at *
则表示模型对比完成。请到指定目录下,查看对比结果的输出文件。
结果查看
一共分为五个文件。其中四个文件在第一行就会自我说明一下,存储的是哪个结果。这个就不再赘述。只有存储表差异的那个文件,结果有点复杂,不容易看懂。这里做个简要说明。格式如下:
*********** Table Name : TEST_TAB1 ******* --Old-- --New-- ----------Diff Fields------------ *Name* ID ID *Lgth* 10 15 ----------Old Filds--------------- *Name* BIRTHDAY *Type* DATE *Lgth* 0 *Scal* 0 ----------New Filds--------------- *Name* AGE *Type* NUMBER *Lgth* 3 *Scal* 0
说明:
Name,指的是字段名称;
Type,指的是数据类型;
Lgth,指的是数据长度,如果没有长度,如date,则显示为0;
Scal,指的是数据精度,如果没有,比如varchar2,则显示为0.
“Diff Fields”部分,是两个表中,有相同的列名,但是列的数据类型、长度以及精度可能存在差异。“Old”列,指的是旧模型下的字段信息,“New”列,指的是新模型下的字段信息。
“Old Filds”部分,是只有旧模型才有的字段以及字段信息。
“New Filds”部分,是 只有新模型才有的字段以及字段信息。
另外,还需要注意:新旧模型各个字段的信息,会以列对齐的方式展示。请注意查看。
很多朋友可能没有接触过TCL,参考资料中有关于搭建TCL开发环境以及运行环境的一个简要说明,希望对大家有所帮助。
参考资料:
原文链接:https://wordpress.diguage.com/archives/78.html
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。