用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
}
更多精彩
赞助商链接