通过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="zhang@163.com"#邮件主题#Email_Subject="详细信息$backtime"##########################################################MKDIR='/bin/mkdir'#########################################################echo "##################判断备份路径 #############################"test ! -d $Payment_DataDir && $MKDIR -p $Payment_DataDirtest ! -w $Payment_DataDir && echo "Error: $Payment_DataDir is un-writeable." && exit 0test ! -d $LogDir && $MKDIR -p $LogDirtest ! -w $LogDir && echo "Error: $LogDir is un-writeable." && exit 0echo "######################备份开始 #############################"echo "" >> $LogDir/$DataName.logecho -e "\033[44;32m-------------------------分割线-----------------------\033[0m \n" >> $LogDir/$DataName.logecho "导出时间为$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的gbkiconv -f "utf-8" -t "gbk" $Payment_DataDir/$DataName-$backtime.xls > $Payment_DataDir/Orders.xls#因第一列数据超过18位,excel中使用了科学计数法,所以把第一列加了“`”转换成文本格式sed -i 's/^/`&/g' $Payment_DataDir/Orders.xlsif [ "$?" == 0 ];then#把导出结果通过邮件脚本,发送到邮箱 /opt/py3/bin/python3 /opt/select_back/select_mail.py echo "导出时间为$backtime,导出$DataName文件结束!!!" >> $LogDir/$DataName.log echo "Mysql-$DataName数据导出成功!!!" >> $LogDir/$DataName.logelse echo "导出时间为$backtime,导出$DataName文件结束!!!" >> $LogDir/$DataName.log echo "Mysql-$DataName数据导失败!!!" >> $LogDir/$DataName.logfiecho "######################导出数据结束,时间为:$backtime#####"
注:如以上有错误或者有不足的地方请指正