WEB开发网
开发学院数据库DB2 用AWK实现DB2 数据库 Schema的同步 阅读

用AWK实现DB2 数据库 Schema的同步

 2007-05-20 16:19:51 来源:WEB开发网   
核心提示: 对于仅在旧数据库中存在的表,需要从db2move.lst中删除该表对应的行,用AWK实现DB2 数据库 Schema的同步(5),对于仅在新数据库中存在的表,需要根据需要有选择的从新数据库中卸出数据并装入到新数据库中,并生成重新卸出数据的SQL语句,# 根据数据库的SCHEMA文件,找出结

对于仅在旧数据库中存在的表,需要从db2move.lst中删除该表对应的行。对于仅在新数据库中存在的表,需要根据需要有选择的从新数据库中卸出数据并装入到新数据库中。找出结构不同的表,并生成卸出数据的SQL脚本。

通过以下步骤,找到在新旧数据库中都存在,并且结构发生了变化的table,并生成重新卸出数据的SQL语句。

# 根据数据库的SCHEMA文件,取得指定table的SCHEMA

# $1: table名称

# $2: 数据库的SCHEMA文件,需要先做格式化

# $3: 输出的表的SCHEMA文件

gettableschema()
{
#echo "table name: " $1
#echo "dbschema name: " $2
#echo "outfile name: " $3
awk -v_tblname=$1 'BEGIN{isThisTable = 0;}{
if($1 == "create" && $2 == "table"
&& match($0, """_tblname""") > 0)
{
isThisTable = 1;
printf("create table %s (
", _tblname); #### )}
else if(isThisTable == 1)
{
if(match($0, ";") > 0)
{
isThisTable = 0;
if($1 == "in")
printf(";
", $0);
else
printf("%s
", $0);
}
else if(match($0,
"timestamp not null with default ,") > 0)
{
printf("%s timestamp not null
with default current timestamp ,
", $1);
}
else
{
printf("%s
", $0);
}
}
}' $2 > $3
}

上一页  1 2 3 4 5 6 7 8 9 10  下一页

Tags:AWK 实现 DB

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接