通过shell导出数据库查询结果到excel中,并通过邮件发送到邮箱 #!/bin/bash #通过shell查询数据信息并保存在excel中,并记录日志 #Data:2018-06-14 #Name:Zhang #数据库连接地址 DBServer='192.168.1.1' #数据库用户名 DBUserName='zhang' #数据库密码 DBPasswd='zhang' ########################################################### #选择数据库 Use_Cmd="usezhang" #查询数据库信息sql语 Select_Cmd="SELECT*FROMSTUDENTS;" ########################################################### #后台支付信息保存路径 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_DataDir test!-w$Payment_DataDir&&echo"Error:$Payment_DataDirisun-writeable."&&exit0 test!-d$LogDir&&$MKDIR-p$LogDir test!-w$LogDir&&echo"Error:$LogDirisun-writeable."&&exit0 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#####"
注:如以上有错误或者有不足的地方请指正