背景
Shell 脚本实现批量导出 MySQL 数据库中按周期生成的表的某些字段到文件。
MySQL 查看导出文件前缀
脚本要点
- shell 循环语句
- shell 操作 MySQL 的方式:select xxx from xxx into outfile shell 操作 MySQL 的方式:select xxx from xxx into outfile 'filePath/fileName’命令完成导出部分数据的功能
- 导出文件路径必须是 secure_file_priv 变量定义的目录或子目录。
编写脚本
HOSTNAME="127.0.0.1"
PORT="3306"
USERNAME="root"
PASSWORD="MyPass!"
prefix='My_Log_201902'
for ((date = 1; date <= 28; date++))
do
if [ $date -le 9 ] ;then
prefixWithDate=$prefix'0'$date
else
prefixWithDate=$prefix$date
fi
for ((hour = 0; hour <= 23; hour++))
do
if [ $hour -le 9 ] ;then
lastTableName=$prefixWithDate'0'$hour
else
lastTableName=$prefixWithDate$hour
fi
echo $lastTableName
create_db_sql="select time,total_package_num,total_byte_num from mydb.$lastTableName into outfile '/var/lib/mysql-files/$lastTableName.csv';"
mysql -h${HOSTNAME} -P${PORT} -u${USERNAME} -p${PASSWORD} -e "${create_db_sql}"
echo $lastTableName'ok'
done
done
#打包
tar -czvf MyLog_2019All.tar.gz /var/lib/mysql-files
启示录
能够迅速在不同编程语言之间切换,也是本人从工作中锻炼出来技能。
临时发挥、罗列各种语言的注释字符如下:
- Java /** **/ //
- C /** **/ //
- C++ /** **/ //
- JavaScript /** **/ //
- Shell #
- Python #
- MySQL --(两个短横线)
除了C、C++,其他几种语言竟然都是自己经常使用的啊。