【shell】定时删除DB2表数据

使用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

执行脚本后:

image



posted @ 2019-01-03 13:56  OLIVER_QIN  阅读(806)  评论(0编辑  收藏  举报