#!/bin/ksh
XasLinux联盟 if (($# != 4)) then
XasLinux联盟 XasLinux联盟 print "Usage:csh bakup_dbtab.sh dbname start_time[yyyy-mm-dd] stop_time[yyyy-mm-dd] mapping";
XasLinux联盟 exit 0;
XasLinux联盟 XasLinux联盟 elif (($# == 4)) then
XasLinux联盟 XasLinux联盟 dbname=$1;
XasLinux联盟 print "$dbname";
XasLinux联盟 mkdir "$2--$3";
XasLinux联盟 filedir="$2--$3";
XasLinux联盟 print "$filedir";
XasLinux联盟 XasLinux联盟 fi
XasLinux联盟 XasLinux联盟 for tabname in $(< $4)
XasLinux联盟 do
XasLinux联盟 XasLinux联盟 mkdir "$filedir/$tabname";
XasLinux联盟 dbaccess $dbname <<EOF
XasLinux联盟 unload to "tmp_time.unl" select extend(first_result,year to day) from $tabname where extend(first_result,year to day)>="$2" and extend(first_result,year to day)<="$3";
XasLinux联盟 EOF
XasLinux联盟 XasLinux联盟 sed 's/|//w time.unl' tmp_time.unl
XasLinux联盟 rm tmp_time.unl
XasLinux联盟 for time in $(<time.unl)
XasLinux联盟 do
XasLinux联盟 XasLinux联盟 dbaccess $dbname <<EOF
XasLinux联盟 unload to "$filedir/$tabname/$time.unl" select * from $tabname where extend(first_result,year to day)="$time";
XasLinux联盟 EOF
XasLinux联盟 done
XasLinux联盟 rm time.unl;
XasLinux联盟 done
XasLinux联盟 XasLinux联盟 print "Do you want unite the date by table ?(warning:if the system limit files size ,please enter n)(y/n)"
XasLinux联盟 read answer
XasLinux联盟 if [[ $answer == [Yy]* ]];
XasLinux联盟 then
XasLinux联盟 for tabdir in $(< $4)
XasLinux联盟 do
XasLinux联盟 cat $filedir/$tabdir/*.unl > $filedir/$tabdir\-$3.data;
XasLinux联盟 rm -r "$filedir/$tabdir";
XasLinux联盟 done
XasLinux联盟 fi
XasLinux联盟 XasLinux联盟 print "tar the $filedir ";
XasLinux联盟 tar -cvf $filedir.tar $filedir;
XasLinux联盟 XasLinux联盟 print "compress the $filedir.tar "
XasLinux联盟 compress $filedir.tar
XasLinux联盟 XasLinux联盟 print "Do you want delete temp dir?(y/n)"
XasLinux联盟 read answer2
XasLinux联盟 if [[ $answer2 == [Yy]* ]];
XasLinux联盟 then
XasLinux联盟 rm -r $filedir
XasLinux联盟 fi
XasLinux联盟 XasLinux联盟 print "Do you want delete the bak_data from table ?(y/n)"
XasLinux联盟 read answer3
XasLinux联盟 if [[ $answer3 == [Yy]* ]];
XasLinux联盟 then
XasLinux联盟 for tabname in $(< $4)
XasLinux联盟 do
XasLinux联盟 dbaccess $dbname <<EOF
XasLinux联盟 unload to "del_tmp_time.unl" select extend(first_result,year to day) from $tabname where extend(first_result,year to day)>="$2" and extend(first_result,year to day)<="$3";
XasLinux联盟 EOF
XasLinux联盟 XasLinux联盟 sed 's/|//w del_time.unl' del_tmp_time.unl
XasLinux联盟 rm del_tmp_time.unl
XasLinux联盟 for time in $(<del_time.unl)
XasLinux联盟 do
XasLinux联盟 dbaccess $dbname <<EOF
XasLinux联盟 delete from $tabname where extend(first_result,year to day)="$time";
XasLinux联盟 EOF
XasLinux联盟 done
XasLinux联盟 rm del_time.unl;
XasLinux联盟 done
XasLinux联盟 fi