Loading

db2导出数据为insert格式

#【免责声明】本脚本仅供参考,不提供功能、性能、编码、规范性等方面的保障,使用前请务必自行进行充分测试。
#功能说明:本脚本用于导出Table为insert格式
#使用范例:sh ExportInsertSql.sh [tabname]

db2 connect to upp>>/dev/null

#存放表列名和表数据的临时文件,请修改为自己的路径
colPath=/uppdb/wcr/colname
dataPath=/uppdb/wcr/data
#最终生成的sql文件
sqlPath=/uppdb/wcr/$1.sql

#查询表的列名
echo "查询表的列名"
colSql="export to ${colPath} of del select name from sysibm.syscolumns where tbname='$1'"
result=`db2 "${colSql}"`

#删除某一列,比如:有些自增的ID列不希望导出
cat ${colPath}|sed /\"ID\"/d > ${colPath}


#拼接列名
colname=""
while read line
do
    colname="${colname},coalesce(${line},'null')"
done < ${colPath}
colname=${colname#,}

#导出表数据
echo "导出表数据"
dataSql="export to ${dataPath} of del modified by chardel'' select ${colname} from $1"
result=`db2 "${dataSql}"`

#拼接insert语句时使用的列名
insertColname=`cat ${colPath}|xargs|tr ' ' ','`


#将表数据拼接成insert格式
echo "开始拼接insert"
while read line
do
    echo "INSERT INTO $1 (${insertColname}) VALUES (${line});" | sed 's/'\''null'\''/null/g' | sed 's/'\''null'\''/'\'\''null'\'\''/g' >> ${sqlPath}
done < ${dataPath}

db2 connect reset>>/dev/null

echo "Complete!"
posted @ 2023-08-10 10:47  北兢王  阅读(373)  评论(0编辑  收藏  举报