Linux环境创建定时任务——实现db2数据备份(.csv和.ixf格式)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36501591/article/details/86497280

这个任务花了1天1夜的时候,当然算上了晚上加班时间。哈哈哈,,,

主要问题:

第一:手动执行.sh文件是没有问题的,而定时任务执行.sh文件则提示没有连接到数据库。

处理方法:

在脚本最前面加上一句:

source ~/.bash_profile

这样运行环境就一摸一样了。加上这句后,直接执行能成功的脚本放在crontab里都能执行。

第二:导出的数据乱码,excel2003版本太低,打不开cvs格式的文件。

第三:第三个问题:未获取到当前时间(下面有详细解释)

 

一、运行crontab –e 编写一条定时任务 */5 * * * * /home/test.sh 在每5分钟执行一次test.sh脚本。

 

二、查询当前用户定时任务或删除当前用户定时任务。

2.1获取当前日期

第一种:声明变量

DATE=`date "+%Y%m%d"`

上面两点是数字1左边的。加号要紧贴着右边,否则无效。

引用:touch_${DATE}.txt

第二种:直接使用日期

  touch `date +%Y%m%d`.txt

三、直接上命令

3.1首先要有一个启动的shell,它是用来让定时任务去调用的,并且记录日志输出日志。executeShell.sh代码如下:

#!/bin/bash
DATE=`date +%Y%m%d`
SHELL_NAME="shell.sh"
echo "begin $SHLL_NAME---"`date`"---" >> /home/db2inst1/metadata_backup/$DATE.log
shell_dir="/home/db2inst1/"
cd $shell_dir
sh $SHELL_NAME >> /home/db2inst1/metadata_backup/$DATE.log

#db2 connect to standard user metadata using metadata

 

3.2shell.sh这个shell是要操作数据库的关键的脚本:

#!/bin/sh
source ~/.bash_profile

date=`date +%Y%m%d`
rm -rf /home/db2inst1/metadata_backup/${date}
cd /home/db2inst1/metadata_backup/
mkdir /home/db2inst1/metadata_backup/${date}

cd /home/db2inst1/metadata_backup/${date}/

echo "开始执行脚本"

if(db2 connect to 数据库名 user 用户名 using 密码 > /dev/null)
then
    echo "[info]db2连接成功"
	db2 export to AAB01.ixf of ixf 'select * from AAB01'

#########################################################
db2 export to AAB01.csv of del 'select * from AAB01'

else
    echo "[info]db2连接失败"
    exit 1
fi

if(db2 connect reset > /dev/null)
then 
    echo "[info]db2连接断开成功"
else
    echo "[info]db2连接断开失败"
fi


#cd /home/db2inst1/metadata_backup/
#tar -zcvf ${date}.tgz /home/db2inst1/metadata_backup/${date}/
#rm -rf /home/db2inst1/metadata_backup/${date}

四、成果图

参考:

https://www.linuxidc.com/linux/2018-11/155189.htm

https://blog.csdn.net/qq_28538407/article/details/81130737

https://blog.csdn.net/alibo2008/article/details/7588046

猜你喜欢

转载自blog.csdn.net/qq_36501591/article/details/86497280