[原創]DB2 並行Export 指令碼 --分割槽資料庫
#!/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;
}
{
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
then
USAGE
fi
dbname=""
tablename=""
pathdir=""
filetype=""
outfile=""
logfile=""
tmpfile=$(basename $0).tmp
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
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`
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
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
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
#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
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
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
then
echo "Export [${tablename}] Success!!!!" |tee -a $logfile
exit 1
else
echo "!!!Export [${tablename}] Failed!!!!" |tee -a $logfile
exit -1
fi
date
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/177006/viewspace-719612/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 理解 MySQL(4):並行資料庫與分割槽(Partition)MySql並行資料庫
- DB2多分割槽資料庫的常用管理NWDB2資料庫
- 海量資料遷移之分割槽並行抽取並行
- 海量資料遷移之分割槽並行切分並行
- 分割槽表入無分割槽的資料庫資料庫
- 監控DB2資料庫指令碼DB2資料庫指令碼
- 【原創】ORACLE 分割槽與索引Oracle索引
- 分割槽索引的並行度索引並行
- 分割槽表並行建立索引並行索引
- 海量資料遷移之使用分割槽並行切分匯入並行
- 資料庫分割槽表 什麼情況下需要分割槽資料庫
- SQL Server 自動迴圈歸檔分割槽資料指令碼SQLServer指令碼
- 大表裡有資料時表分割槽參考指令碼指令碼
- mysql資料庫分割槽技術MySql資料庫
- 資料庫分割槽的文章收集資料庫
- 分割槽表匯入資料庫資料庫
- 資料庫系統設計:分割槽資料庫
- 超大資料庫和分割槽手冊大資料資料庫
- WINDOWS還原系統後原多個分割槽合併為一個分割槽後怎麼進行資料恢復Windows資料恢復
- 《boot分割槽監控的小指令碼》boot指令碼
- E6 資料庫分割槽技術資料庫
- 詳解ORACLE資料庫的分割槽表Oracle資料庫
- Sql Server 2005資料庫分割槽SQLServer資料庫
- MySql資料分割槽操作之新增分割槽操作MySql
- 插入遠端資料庫資料遇到分割槽表bug資料庫
- 聊聊Spark的分割槽、並行度 —— 前奏篇Spark並行
- 大分割槽表的手工並行優化並行優化
- 資料庫分割槽表分割槽未分配導致的一些問題資料庫
- 【轉載】linux自動分割槽指令碼Linux指令碼
- zabbix上對mysql資料庫做分割槽表MySql資料庫
- Oracle資料庫開發——瞭解分割槽表Oracle資料庫
- 全面剖析Oracle資料庫中的分割槽功能Oracle資料庫
- Oracle 12cr2 資料庫之間傳輸表,分割槽或子分割槽Oracle資料庫
- sqlserver資料庫還原儲存過程指令碼SQLServer資料庫儲存過程指令碼
- 使用儲存指令碼還原恢復資料庫指令碼資料庫
- DB2分割映象來備份資料庫DB2資料庫
- 重要 | Spark分割槽並行度決定機制Spark並行
- oracle 並行cpu查詢分割槽表測試Oracle並行