Search This Blog

Thursday, November 28, 2013

UNIX: Copy Data (Table to Table or Server to Server)

#!/bin/ksh -f  
 
DT=`date +%Y%d%m%H%S`  
 
OPTIND=1  
while getopts S:s:B:b:T:t:U:u:D: opt  
do  
        case $opt in  
        S) DSQUERY1=$OPTARG ;;  
        s) DSQUERY2=$OPTARG ;;  
        B) DATABASE1=$OPTARG ;;  
        b) DATABASE2=$OPTARG ;;  
        T) TABLE1=$OPTARG ;;  
        t) TABLE2=$OPTARG ;;  
        U) SYBUSER1=$OPTARG ;;  
        u) SYBUSER2=$OPTARG ;;  
        \?) exit ;;  
        esac  
done  
shift `expr $OPTIND - 1`  
 
if [ ! -d /var/tmp/dirn ]  
then  
mkdir /var/tmp/dirn  
fi  
stty -echo   
echo "Password for DSQUERY1 :"  
read PASSWD1  
stty echo   
 
stty -echo   
echo "Password for DSQUERY2 :"  
read PASSWD2  
stty echo   
 
bcp $DATABASE1..$TABLE1 out /var/tmp/dirn/$TABLE1_$DT.txt -S $DSQUERY1 -U $SYBUSER1 -P $PASSWD1 -c -t "|" -e /var/tmp/dirn/$TABLE1_$DT.err  
 
print "BCP OUT from $DSQUERY1 done"  
 
isql -U $SYBUSER2 -S $DSQUERY2 -P $PASSWD2<<-SQL  
use DATABASE2  
go  
truncate table $TABLE2  
go  
-SQL  
 
print "Truncating Table in $DSQUERY1 done"  
 
bcp $DATABASE2..$TABLE2 in /var/tmp/dirn/$TABLE1_$DT.txt -S $DSQUERY2 -U $SYBUSER2 -P $PASSWD2 -c -t "|" -e /var/tmp/dirn/$TABLE2_$DT.err  
 
print "BCP IN to $DSQUERY2 done"

No comments:

Post a Comment