• 【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



  • 相关阅读:
    有趣的linux指令
    Linux——文件打包与压缩
    linux点滴记录
    不归零法编码、曼彻斯特编码和差分曼彻斯特编码
    MySQL点滴记录
    hdu 1200 To and Fro(简单模拟或DP)
    hdu 1081 To The Max(dp+化二维为一维)
    抓起根本(二)(hdu 4554 叛逆的小明 hdu 1002 A + B Problem II,数字的转化(反转),大数的加法......)
    抓其根本(一)(hdu2710 Max Factor 素数 最大公约数 最小公倍数.....)
    hdu 1159 Common Subsequence(最长公共子序列 DP)
  • 原文地址:https://www.cnblogs.com/OliverQin/p/10213793.html
Copyright © 2020-2023  润新知