用AWK实现DB2 数据库 Schema的同步
2007-05-20 16:19:51 来源:WEB开发网核心提示: 其中,TABLEINBOTH是由上一步(找出仅在旧库或者新库中独有的表)的副产品,用AWK实现DB2 数据库 Schema的同步(7),注意,上述程序中,取得新SCHEMA的表空间名称通过以下步骤,找出新数据库使用的表空间的名称,并没有处理新旧table中均有并且字段类型不同的字段,这种情
其中,TABLEINBOTH是由上一步(找出仅在旧库或者新库中独有的表)的副产品。
注意,上述程序中,并没有处理新旧table中均有并且字段类型不同的字段,这种情况可以在卸出数据时按需要手工编辑生成的SQL脚本。
生成的SQL脚本名称叫"unload.sql"。在PC机上的DB2命令窗口中执行:
db2 -z result.txt -tvf unload.sql
其中,"-z"选项将执行结果同时输出到屏幕及文件result.txt中。执行结束时,需要查看result.txt,如果其中有错误提示,请按需要修改unload.sql。修改之后,再重新执行上述命令,直到所有SQL命令均执行无错为止。
取得新SCHEMA的表空间名称
通过以下步骤,找出新数据库使用的表空间的名称,并给出创建数据库缓冲池及表空间的SQL的建议。
# 8. 根据新数据库SCHEMA文件取得tablespace的名称清单
# 并给出创建缓冲池及tablespace的SQL建议
echo "创建缓冲池的命令: "
echo "create bufferpool BF81 size 10000 pagesize 8 K"
echo "创建表空间的命令: "
echo "------------------------------------
--------------------------"
for tblspace in ` grep -i "^[ ]*in[ ]" ${NEWDBSCHEMA} | grep ";" | awk '{
printf("%s
", $2);
if(NF > 3)
{
if($3 == "INDEX" && $4 == "IN")
{
printf("%s
", $5);
}}
}' | sort | uniq `
do
echo "CREATE TABLESPACE ${tblspace} PAGESIZE 8K MANAGED BY DATABASE USING
(FILE '<filename>' 50000) bufferpool bf81"
done
echo "-----------------------------------
---------------------------"
更多精彩
赞助商链接