用 AWK 实现 DB2 数据库 Schema 的同步
2007-04-09 22:17:11 来源:WEB开发网DB2数据库SCHEMA同步步骤
1、从SIT环境中取得最新的数据库SCHEMA
2、从单元测试环境取得旧数据库的SCHEMA
3、在单元测试环境,用db2move命令卸出旧数据库的数据
4、比较两个版本的异同
5、如果没有任何表的SCHEMA发生了改变,则执行第7步
6、如果有表的SCHEMA发生了改变,则执行:
用新的表结构创建一个临时表;
生成insert into transtmptbl (...) select ... from <oldtbl>的SQL;
将临时表中的数据导出到文件中;
删除临时表;
用新的数据替换第3步导出的指定表的数据文件,然后执行第7步
7、取得新SCHEMA的表空间名称
8、重建数据库
9、有选择的将新库中独有的表的数据导入到本地新数据库中
10、检查数据库的完整性
以下,我们详细说明这些步骤。
从SIT环境中取得最新的数据库SCHEMA
在SIT环境中,执行以下命令:
db2look -d cusgadev -i db2admin -w db2admin -e -a -o cusnew.sql |
该命令用于从SIT环境中抽取最新的DDL语句。其中各选项的涵义如下:
-d <dbname>:指定被抽取DDL的数据库名称。
-e:抽取数据库的DDL语句,包括表、视图、自动摘要表、别名、索引、触发器、Sequences、User defined Distinct Types、Prima(最完善的虚拟主机管理系统)ry Key/RI/CHECK约束、用户定义的结构化类型、用户定义的函数、用户定义的方法、用户定义的转换。
-i <userid>:连接远程数据库时,需要用这个选项指定登录用户名。
-w <passwd>:连接远程数据库时,需要用这个选项指定登录用户的密码。
-a:输出所有用户创建的对象,而不仅仅是当前登录用户创建的对象。
-o <outfile>:将DDL输出到指定的文件中。如果不指定该选项,则将输出到标准输出。
从单元测试环境取得旧数据库的SCHEMA
在单元测试环境中,执行以下命令:
db2look -d cusgadev -e -a -o cusnew.sql |
该命令用于从单元测试环境中抽取最新的DDL语句。各选项的涵义见上文。
在单元单元测试环境,卸出旧数据库的数据
在单元测试环境中,执行以下命令:
db2move cusgadev export |
该命令用于将单元测试环境中已有的数据输出到当前目录下。该命令为每一个表生成独立的PC/IXF格式的数据文件,这些文件可以传输到任何其他的机器上并通过load或者import命令装入到那台机器上的DB2数据库中。
该命令同时生成一个名为"db2move.lst"的文件,这个文件是卸出表的清单,指明哪一个表对应到哪一个数据文件。该文件将用于之后的步骤,以便用最新的SCHEMA卸出原有表的数据。
分析新旧数据库SCHEMA
以下,我们使用cygwin环境下的SHELL程序来分析新旧数据库的SCHEMA。
更多精彩
赞助商链接