[原创]DB2 并行Export 脚本 --基于分区数据库

原创 2012年03月27日 11:43:21
原理是所有的节点输出文件指向同一个目录---使用共享存储也不错
 
#!/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

DB2中导出数据库的所有DLL脚本

 DB2的db2look命令诠释如下:db2look 版本 8.2db2look:生成 DDL 以便重新创建在数据库中定义的对象语法: db2look -d DBname [-e] [-u Creat...
  • gavin8197
  • gavin8197
  • 2008年12月17日 10:01
  • 2880

db2 分区数据库详解

本文主要介绍什么是 DB2 数据库分区,为什么采用数据库分区,并以 Balanced Warehouse E7100 为例介绍数据库分区管理的基本方法及应用实践。 DB2 数据库分区是 ...
  • pianzif
  • pianzif
  • 2014年03月30日 22:15
  • 6048

搭建db2数据库多分区

概述              毕业后所做的几个应用都是采取db2作为后端的数据库,但是大多数都仅限于应用开发时多数据库的一些操作,关于db2的维护方面了解的不是太多,前端时间牛辛庄老师的关于db的三...
  • angelo_java
  • angelo_java
  • 2013年12月28日 14:08
  • 1719

DB2 export

EXPORT 实用程序概述EXPORT 实用程序使用一条 SQL SELECT 语句或 XQUERY 语句将数据从数据库表提取到一个文件中。数据可以被导出到 DEL、IXF 或 WSF 文件中。建议在...
  • wfq826qfw
  • wfq826qfw
  • 2011年07月12日 16:08
  • 2094

DB2多分区数据库的常用管理

DB2的多分区管理通常会给大家有点挑战性,但是很多时候多分区和单分区管理差别不是很大,如下总结了常见的操作管理命令: 启动指定分区的数据库节点: db2start dbpartitionnum...
  • marvelyu
  • marvelyu
  • 2012年04月06日 21:41
  • 3352

db2删除分区

今天给系统中一个表新增了一个分区: alter table t_hzc_gxsjdxmx_jg add partition T_HZC_GXSJDXMX_JG_20110103 STARTING F...
  • DLODJ
  • DLODJ
  • 2011年12月05日 10:19
  • 6541

VMWare搭建DB2 DPF多分区环境

本文介绍如何在VMWare 11中通过两个虚拟机安装DB2 10.5 DPF多分区数据库。
  • quqibing001
  • quqibing001
  • 2016年05月23日 17:15
  • 1442

Linux下DB2数据库备份脚本

脚本在root用户下运行: 新建backupDB2Task.sh内容如下:
  • zengyou250
  • zengyou250
  • 2014年05月27日 15:47
  • 634

db2数据库常用sql脚本

项目快做完了,想来这里写点东西,一直在做项目管理,技术上也没啥新东西,常用的db2数据库脚本分享下吧,以后用得着也可以来这里找找。 1,导出某些表的表结构语句和数据。 导出表结构:...
  • lushuaiyin
  • lushuaiyin
  • 2016年11月30日 14:44
  • 1460

db2 自动备份(linux 、windows)总结

1.linux  db2 自动备份,备份后压缩,拷贝到另一服务器 全备份: #!/bin/sh #------------------------------------- #db2自...
  • lushuai09
  • lushuai09
  • 2013年08月06日 23:13
  • 4214
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[原创]DB2 并行Export 脚本 --基于分区数据库
举报原因:
原因补充:

(最多只允许输入30个字)