用AWK实现DB2 数据库 Schema的同步
2007-05-20 16:19:51 来源:WEB开发网核心提示: 其中,tablespace的名称是从新数据库的SCHEMA文件中提取出来的,用AWK实现DB2 数据库 Schema的同步(10),本例中,它们都使用同一个缓冲池,#!/usr/bin/sh# 在数据load结束后,检查数据库的完整性# Copyright: SI HITECH 2006#
其中,tablespace的名称是从新数据库的SCHEMA文件中提取出来的。本例中,它们都使用同一个缓冲池。""需要按照PC机硬盘空余空间的情况,修改为实际的全路径文件名称。
8、用新的SCHEMA创建数据库:
执行以下命令,按照新数据库的SCHEMA创建其中的各种对象,如表、索引等:db2 -tvf cusnew.sql。
9、装入数据,执行以下命令,将旧数据库的数据装入到刚创建的新数据库中:db2move cusgadev load。
该命令使用的修改后的db2move.lst作为装入表的清单。
有选择的将新库中独有的表的数据导入到本地新数据库中对于仅在新数据库中存在的表,可以根据需要有选择的将其数据从SIT环境导入到单元测试环境。本文中,不考虑新表对于其他表的外键关联。
假设某个仅在新数据库中存在的表的名称为"newtable",在SIT环境执行以下命令卸出数据:
db2 unload to newtable.ixf of ixf select * from newtable。将文件“newtable.ixf”传输到单元测试环境所在的PC机上,执行以下命令:db2 load from newtable.ixf of ixf insert into newtable。如果这个新表对于其他表有外键关联,还需要导入其他相关表的数据。
检查数据库的完整性
检查完整性的SHELL程序以下是"CheckIntegrity.sh"的源代码。该程序用于在数据load结束以后,检查数据库的完整性。
#!/usr/bin/sh
# 在数据load结束后,检查数据库的完整性
# Copyright: SI HITECH 2006
# 作 者: 郑靖华
# 创建日期: 2006 年 8 月 2 日
# 指定数据库名称
if [ $# -lt 1 ]
then
DBNAME=ccdb
else
DBNAME=$1
fi
# 检查db2move的lst文件
if [ ! -r db2move.lst ]
then
echo "当前目录下没有db2move的清单文件
[ db2move.lst ],请确保目录正确并再次执行本命令!"
exit 1
fi
# 生成执行完整性检查的SHELL程序
awk -F"!" -v_dbname=${DBNAME} 'BEGIN{
printf("connect to %s;
", _dbname);
}{
printf("set integrity for %s immediate checked;
", $2);
}' db2move.lst > $DBNAME.integrity.sql
# 执行检查程序
db2 -tvf $DBNAME.integrity.sql
echo "完整性检查完毕,请仔细查看检查结果!"
exit 0
更多精彩
赞助商链接