使用db2的时候,有时候需要对表数据进行删除,防止数据太多,造成数据库空间满了
以下是一个定时删除表tmp,tm1中id为1的数据的脚本
#!/bin/sh ##---------------------------------------------------------- ##--功能说明:定时删除数据 ##--开发公司:XXX ##--作者:qys ##--时间:2019-01-02 ##--输入参数:无 ##--版本维护 ## 版本: 更新日期: 更改人: 更改说明: ## -------------------------------------------------------- ## v1.0 2019-01-02 qys 创建shell脚本 ##-------------------------------------------------------------- #定义数据库连接变量 dbname='QINDB' dbuser='db2inst1' dbpwd='db2inst1' #连接数据库 connDB2() { db2 get connection state | grep 'Connected'>/dev/null res1=$? #获取上一命令的执行状态 if [[ $res1 -eq 0 ]] then echo "The DB has been connected!">>deleteTable.log else db2 connect to $dbname user $dbuser using $dbpwd>/dev/null res2=$? i=0 while [ $i -lt 3 ] do i='expr $i + 1' if [[ $res2 -eq 0 ]] then echo "The DB has been connected!">>deleteTable.log break else sleep 3 db2 connect to $dbname user $dbuser using $dbpwd>/dev/null res2=$? fi done fi } #删除表操作 TableAry=("TMP" "TMP1") deleteTable() { for Tablename in "${TableAry[@]}" do sql="delete from ${Tablename} WHERE ID=1" echo "Action sql:$sql">>deleteTable.log db2 $sql>>deleteTable.log echo "The ${Tablename}'s data has been detete!">>deleteTable.log done } #断开数据库连接 DisconnectDB() { db2 connect reset>>deleteTable.log echo "The DB has been disconnect!">>deleteTable.log } #执行命令 run() { BeginDT=`date +%Y-%M-%d,%H:%m:%s` echo "===================Begin${BeginDT}========================">>deleteTable.log #1.连接数据库 connDB2 #2.删除数据 deleteTable #3.断开数据库连接 DisconnectDB EndDT=`date +%Y-%M-%d,%H:%m:%s` echo "==================EndDT${EndDT}==========================">>deleteTable.log } run
执行脚本后: