通过shell导出数据库查询结果到excel中,并通过邮件发送到邮箱

通过shell导出数据库查询结果到excel中,并通过邮件发送到邮箱
#!/bin/bash
#通过shell查询数据信息并保存在excel中,并记录日志
#Data:2018-06-14
#Name:Zhang

#数据库连接地址
DBServer='192.168.1.1'
#数据库用户名
DBUserName='zhang'
#数据库密码
DBPasswd='zhang'
###########################################################
#选择数据库
Use_Cmd="use zhang"
#查询数据库信息Sql语
Select_Cmd="SELECT * FROM STUDENTS;"
###########################################################
#后台支付信息保存路径
Payment_DataDir='/opt/select_back'
#日志保存路径
LogDir=/opt/select_back/logs
#数据导出时间
backtime=`date +%Y%m%d%H%M`
#保存文件名称
DataName="支付订单信息"
###########################################################
#邮件收件人
#Email_receiver_people="[email protected]"
#邮件主题
#Email_Subject="详细信息$backtime"
##########################################################
MKDIR='/bin/mkdir'
#########################################################

echo "##################判断备份路径 #############################"
test ! -d $Payment_DataDir && $MKDIR -p $Payment_DataDir
test ! -w $Payment_DataDir && echo "Error: $Payment_DataDir is un-writeable." && exit 0
test ! -d $LogDir && $MKDIR -p  $LogDir
test ! -w $LogDir && echo "Error: $LogDir is un-writeable." && exit 0

echo "######################备份开始 #############################"
echo "" >> $LogDir/$DataName.log
echo -e "\033[44;32m-------------------------分割线-----------------------\033[0m \n" >> $LogDir/$DataName.log
echo "导出时间为$backtime,导出${DataName}文件开始" >> $LogDir/$DataName.log
/usr/local/mysql/bin/mysql -u$DBUserName -h$DBServer -p$DBPasswd  -e "$Use_Cmd;$Select_Cmd" > $Payment_DataDir/$DataName-$backtime.xls
#sed -i 's/^/`&/g' $Payment_DataDir/$DataName-$backtime.xls
#使用iconv转换编码格式,把linux的utf8转换成windows的gbk
iconv -f "utf-8" -t "gbk" $Payment_DataDir/$DataName-$backtime.xls > $Payment_DataDir/Orders.xls
#因第一列数据超过18位,excel中使用了科学计数法,所以把第一列加了“`”转换成文本格式
sed -i 's/^/`&/g' $Payment_DataDir/Orders.xls
if [ "$?" == 0 ];then
#把导出结果通过邮件脚本,发送到邮箱
	/opt/py3/bin/python3 /opt/select_back/select_mail.py
	echo "导出时间为$backtime,导出$DataName文件结束!!!" >> $LogDir/$DataName.log
	echo "Mysql-$DataName数据导出成功!!!" >> $LogDir/$DataName.log
else
	echo "导出时间为$backtime,导出$DataName文件结束!!!" >> $LogDir/$DataName.log
	echo "Mysql-$DataName数据导失败!!!" >> $LogDir/$DataName.log
fi

echo "######################导出数据结束,时间为:$backtime#####"

注:如以上有错误或者有不足的地方请指正

猜你喜欢

转载自blog.51cto.com/bosszhang/2132492
今日推荐