a sample of SQL shell 简单数据库脚本实例

#数据库shell编程实例

QLDATA=/home/sylar/Scripts

#how long will stored

DATA_STORE=92                 

#if par eq 1 

if [ $# -eq 1 ]

then

if [ "${1}X" = "FX" ]   

then 

echo "\t现在进行数据备份,请稍候..."

elif [ "${1}X" = "SX" ]

then

echo "\t请确认进行了数据备份..."

echo "\t按Enter键继续,退出请按中断键... "

read key 

else

echo "\t参数错"

echo "\n\tUsage:\t$0 F [ S ]"

echo "\t \$1=F,表示进行数据备份" 

echo "\t \$1=S,表示将重新建表,并进行数据整理" 

exit 0

fi

else

echo "\n\tUsage:\t$0 F [ S ]"

echo "\t \$1=F,表示进行数据备份" 

echo "\t \$1=S,表示将重新建表,并进行数据整理" 

exit 0

fi

#process dbacces db and then select wkdata-77 from ctl_syspmt

TMPDATE=`dbaccess db<<! 

select wkdate-${DATA_STORE} from ctl_syspmt;

!`

#get second par

DATE=`echo $TMPDATE | awk '{print $2}'`

#if has dir

if [ -d $QLDATA ]

then

echo "\n\t清理备份的数据保存在目录[$QLDATA]下"

echo "\t请确认存储空间足够"

echo "\t清理后数据库中相应的表只保存日期[$DATE]后的数据"

echo "\t按Enter键继续,退出请按中断键... "

read key 

else

echo "\n\t检查清理备份的目录 [ $QLDATA ] 不存在,请创建后重新执行 ... "

exit 0

fi

cd $QLDATA

if [ "${1}X" = "FX" ]

then

echo "\n\t将在$QLDATA目录下创建以下目录"

echo "\n\tsql目录存放表结构" 

echo "\n\ttxt目录存放历史表全量数据"

echo "\n\tptxt目录存放历史表中需要暂时保存的数据"

mkdir sql

mkdir txt

mkdir ptxt

#read serial table and fineld_name from text doc

while  read serial table field_name

do

echo "\n\t卸出表结构 [$serial]:[$table]..."

#-d dbname -t table name -ss  1> output information send into dev null

dbschema -d hvpsdb -t $table -ss ${QLDATA}/sql/${table}.sql 1>/dev/null;

echo "\n\t卸出需要保留的文本 [$serial]:[$table]..."

dbaccess hvpsdb 2>/dev/null <<!

unload to ${QLDATA}/ptxt/${table}.txt select * from ${table} where ${field_name} >= "${DATE}";

#unload all data

unload to ${QLDATA}/txt/${table}.txt select * from $table;

!

done < ${QLDATA}/hvps_table

fi

if [ "${1}X" = "SX" ]

then

for table in `awk '{print $2}' ${QLDATA}/hvps_table`

do

echo "\n\t并删除表[$table]" 

dbaccess hvpsdb 2>/dev/null <<!

drop table $table;

!

echo "\n\t重建表 [$table]" 

dbaccess hvpsdb ${QLDATA}/sql/${table}.sql;

echo "\n\t装入数据 [$table]" 

dbaccess hvpsdb 2>/dev/null <<!

load from  ${QLDATA}/ptxt/${table}.txt insert into  $table;

!

done

fi

原文地址:https://www.cnblogs.com/SuperXJ/p/2212909.html