[原创]DB2 并行Export 脚本 --基于分区数据库
2012-03-27 11:43
162 查看
原理是所有的节点输出文件指向同一个目录---使用共享存储也不错
#!/bin/sh
USAGE ()
{
echo "Usage: `basename $0` [-d database] {-t tablename} [-p path] [-s filetype] [-o output] [-l logfile]";
echo "Db2export Parameter Infomation:";
echo " Parameter -t must be specified [必须指定表名]";
echo " Parameter -d: Database Name,Default Value:sdncbi [数据库名]";
echo " Parameter -p: OutPath Name,Default Value:Current Directory [输出目录]";
echo " Parameter -s: File Type,{IXF | DEL | WSF} [文件类型]";
echo " Parameter -o: File Name,Default Value:Table Name [输出文件]";
echo " Parameter -f: Logfile Name,Default Value: null [日志文件]";
echo ""
exit 1;
}
if [ $# -lt 2 ]
then
USAGE
fi
dbname=""
tablename=""
pathdir=""
filetype=""
outfile=""
logfile=""
tmpfile=$(basename $0).tmp
#***************************Judge Parameter Begin
while getopts :d:t:p:s:o:l: OPTION ;
do
case "$OPTION" in
d) dbname="$OPTARG" ;;
t) tablename="$OPTARG" ;;
p) pathdir="$OPTARG" ;;
s) filetype="$OPTARG" ;;
o) utfile="$OPTARG" ;;
l) logifle="$OPTARG" ;;
\?) #usage statement
USAGE;
;;
esac
done
if [ "$tablename" = "" ]
then
echo "Parameter -t must be specified "
USAGE;
else
if [ `expr index $tablename .` -le 0 ]
then
echo "The Table Name is the same as tabschema.tabname."
echo "Eg: comm.dim_latn "
exit 1
fi
fi
if [ "$dbname" = "" ]
then
dbname="sdncbi"
fi
if [ "$pathdir" = "" ]
then
pathdir=`pwd`
fi
if [ "$filetype" = "" ]
then
filetype="del"
fi
if [ "$outfile" = "" ]
then
utfile=$tablename
fi
#***************************Judge Parameter End
date
TABSCHEMA=`echo $tablename|cut -d. -f1`
TABNAME=`echo $tablename|cut -d. -f2`
# get partitioning key
db2look -e -d sdncbi -z $TABSCHEMA -t $TABNAME > $tmpfile 2>&1
flag=`cat $tmpfile|grep "CREATE TABLE"|wc -l`
if [ "$flag" -lt 1 ]
then
echo "Tabname is not exists,Please Imput a Correct Tabname!!"
exit
fi
key=`cat $tmpfile | grep "PARTITIONING KEY" | awk -F\" '{print $2}' | sed -e "s/\"//g" `
if [ ! -n "$key" ]; then
key=`cat $tmpfile | grep "HASH" | awk -F\" '{print $2}' | sed -e "s/\"//g" `
fi
#echo $key
#Export data to file
echo "Begin Export [${tablename}] to file" |tee -a $logfile
if [ -n "$key" ]; then
db2_all "\"||db2 connect to ${dbname};db2 'export to ${pathdir}/${outfile}.${filetype}.## of ${filetype} select * from
${tablename} where dbpartitionnum(${key}) = ## with ur';" >$tmpfile
cat $tmpfile|grep "Number of rows exported:" |tee -a $logfile
cat $tmpfile|grep "Number of rows exported:"|awk -F":" 'BEGIN{sum=0}{sum=sum+$3}END{printf("Total Export Rows:%d\n",sum)}' |tee -a $logfile
for file in ${fullname}.del.*;
do
ldfile=`echo $file|cut -d. -f4`
newfile=`echo $oldfile|awk '{printf("%03d\n",$1);}'`
#echo $oldfile -- $newfile
if [ "$oldfile" != "$newfile" ]
then
mv $file ${fullname}.del.$newfile
fi
done
else
db2 connect to ${dbname};db2 "export to ${pathdir}/${outfile}.${filetype} of ${filetype} select * from ${tablename} with ur" >$tmpfile
cat $tmpfile|grep "Number of rows exported:" |tee -a $logfile
fi
if [ `cat $tmpfile|grep "Number of rows exported:"|wc -l` -gt 0 ]
then
echo "Export [${tablename}] Success!!!!" |tee -a $logfile
exit 1
else
echo "!!!Export [${tablename}] Failed!!!!" |tee -a $logfile
exit -1
fi
date
#!/bin/sh
USAGE ()
{
echo "Usage: `basename $0` [-d database] {-t tablename} [-p path] [-s filetype] [-o output] [-l logfile]";
echo "Db2export Parameter Infomation:";
echo " Parameter -t must be specified [必须指定表名]";
echo " Parameter -d: Database Name,Default Value:sdncbi [数据库名]";
echo " Parameter -p: OutPath Name,Default Value:Current Directory [输出目录]";
echo " Parameter -s: File Type,{IXF | DEL | WSF} [文件类型]";
echo " Parameter -o: File Name,Default Value:Table Name [输出文件]";
echo " Parameter -f: Logfile Name,Default Value: null [日志文件]";
echo ""
exit 1;
}
if [ $# -lt 2 ]
then
USAGE
fi
dbname=""
tablename=""
pathdir=""
filetype=""
outfile=""
logfile=""
tmpfile=$(basename $0).tmp
#***************************Judge Parameter Begin
while getopts :d:t:p:s:o:l: OPTION ;
do
case "$OPTION" in
d) dbname="$OPTARG" ;;
t) tablename="$OPTARG" ;;
p) pathdir="$OPTARG" ;;
s) filetype="$OPTARG" ;;
o) utfile="$OPTARG" ;;
l) logifle="$OPTARG" ;;
\?) #usage statement
USAGE;
;;
esac
done
if [ "$tablename" = "" ]
then
echo "Parameter -t must be specified "
USAGE;
else
if [ `expr index $tablename .` -le 0 ]
then
echo "The Table Name is the same as tabschema.tabname."
echo "Eg: comm.dim_latn "
exit 1
fi
fi
if [ "$dbname" = "" ]
then
dbname="sdncbi"
fi
if [ "$pathdir" = "" ]
then
pathdir=`pwd`
fi
if [ "$filetype" = "" ]
then
filetype="del"
fi
if [ "$outfile" = "" ]
then
utfile=$tablename
fi
#***************************Judge Parameter End
date
TABSCHEMA=`echo $tablename|cut -d. -f1`
TABNAME=`echo $tablename|cut -d. -f2`
# get partitioning key
db2look -e -d sdncbi -z $TABSCHEMA -t $TABNAME > $tmpfile 2>&1
flag=`cat $tmpfile|grep "CREATE TABLE"|wc -l`
if [ "$flag" -lt 1 ]
then
echo "Tabname is not exists,Please Imput a Correct Tabname!!"
exit
fi
key=`cat $tmpfile | grep "PARTITIONING KEY" | awk -F\" '{print $2}' | sed -e "s/\"//g" `
if [ ! -n "$key" ]; then
key=`cat $tmpfile | grep "HASH" | awk -F\" '{print $2}' | sed -e "s/\"//g" `
fi
#echo $key
#Export data to file
echo "Begin Export [${tablename}] to file" |tee -a $logfile
if [ -n "$key" ]; then
db2_all "\"||db2 connect to ${dbname};db2 'export to ${pathdir}/${outfile}.${filetype}.## of ${filetype} select * from
${tablename} where dbpartitionnum(${key}) = ## with ur';" >$tmpfile
cat $tmpfile|grep "Number of rows exported:" |tee -a $logfile
cat $tmpfile|grep "Number of rows exported:"|awk -F":" 'BEGIN{sum=0}{sum=sum+$3}END{printf("Total Export Rows:%d\n",sum)}' |tee -a $logfile
for file in ${fullname}.del.*;
do
ldfile=`echo $file|cut -d. -f4`
newfile=`echo $oldfile|awk '{printf("%03d\n",$1);}'`
#echo $oldfile -- $newfile
if [ "$oldfile" != "$newfile" ]
then
mv $file ${fullname}.del.$newfile
fi
done
else
db2 connect to ${dbname};db2 "export to ${pathdir}/${outfile}.${filetype} of ${filetype} select * from ${tablename} with ur" >$tmpfile
cat $tmpfile|grep "Number of rows exported:" |tee -a $logfile
fi
if [ `cat $tmpfile|grep "Number of rows exported:"|wc -l` -gt 0 ]
then
echo "Export [${tablename}] Success!!!!" |tee -a $logfile
exit 1
else
echo "!!!Export [${tablename}] Failed!!!!" |tee -a $logfile
exit -1
fi
date
相关文章推荐
- (原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 神经网络分析算法)
- [原创]实现基于数据库的程序验证
- export 批量导数据(分区)脚本(手动)
- DB2中导出数据库的所有DLL脚本
- 【Vegas原创】RMAN数据库Daily备份脚本(Windows版)
- (原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft Naive Bayes 算法)
- DB2 在线增量备份数据库、还原增量备份数据库、前滚恢复数据库脚本
- 【Vegas原创】RMAN数据库Daily备份脚本(Linux版)
- db2逻辑备份数据库案例export_data
- (原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 顺序分析和聚类分析算法)
- db2 数据库分区
- 【安德鲁斯】基于脚本的数据库"增量更新",如果不改变,每次更新java代码、!
- (原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 线性回归分析算法)
- 解决PDM生成(DB2 数据库)的列注释脚本,在执行时报错
- (原创)大数据时代:基于微软案例数据库数据挖掘知识点总结(Microsoft 时序算法——结果预算+下期彩票预测篇)
- [转]基于SQL脚本将数据库表及字段提取为C#中的类
- DB2 BACKUP数据库 归档日志脚本
- 【Vegas原创】RMAN数据库Daily备份脚本(Linux版)
- atitit.自动生成数据库结构脚本,或者更换数据库,基于hibernate4
- 【Vegas原创】RMAN数据库Daily备份脚本(Windows版)