shell远程导出mysql数据并分割文件
-u 账号
-p 密码
-h ip地址
-P 端口号
-D 库名
–default-character-set=utf8 默认编码
-e 不进入数据库执行 sed ‘s/\t/,/g’ 将水平制表符(tab键,linux下Ctrl+v+tab)替换成逗号(,)
-F ‘,’ 指定文件数据以逗号分割查询列${map[$i]}
获取数组数据
#!/bin/bash/
File_Name="filename.csv"
// 定义预处理sql
SQL="select * from table_name "
echo "开始时间:"`date +"%Y-%m-%d %H:%M:%S"` ;
// -A声明变量为关联数组(支持索引下标为字符串)
declare -A map=(["1"]="金" ["2"]="木" ["3"]="水" ["4"]="火" ["5"]="土" )
// 导出数据库文件
mysql -uroot -p123456 -h 192.168.100.100 -P 3306 -D mm
--default-character-set=utf8 -e "${SQL}" | sed 's/\t/,/g' > $File_Name
// 删除首行标题
sed -i '1d'
// 判断文件是否存在
if [ -f "filename.csv" ];then
// 按类别纷分割文件导出
for i in 1 2 3 4 5
do
cat filename.csv | awk -F ',' '{if( $4=='"$i"' && $5==10010) print}' | sed 's/\t/,/g' > ${i}new_fenge.csv;
// 给文件第一行加一列表头
sed -i '1i 表头名字1,表头名字2' ${i}settlementPLUS沃助理.csv;
// 将文件转码后到新文件
iconv ${i}new_fenge.csv -f utf-8 -t gb18030 -o ${map[$i]}new_feng2.csv;
echo "完成时间:"`date +"%Y-%m-%d %H:%M:%S"` ;
done
else
echo "数据导出错误-文件不存"
fi