版权声明:个人 https://blog.csdn.net/csdnmrliu/article/details/82797116
编写shell脚本自动化导出指定hql结果到csv文件并删除sql语句和关闭连接日志
1. hql文件准备
select a.enodebid as enodebid,
sum(xdrsize) as totalXdrSize,
sum(failed) as totalFailed,
sum(success) as totalSuccess
from test.imsiBackFill a
where date_id = 20180920
and hour = 10
group by enodebid;
2. shell脚本编写
#!/bin/bash
#要查询的sql语句 eg: *.hql
sqlFile=$1
#导出文件完整路径 eg: */resultData.csv
exportFilePath=$2
#导入hive查询结果命令 注意beeline使用完整路径
/usr/local/hive-1.2.2/bin/beeline -u jdbc:hive2://mace:10000 --outputformat=csv2 --showHeader=true -f ${sqlFile} >${exportFilePath}
#处理导出文件 删除sql及最后一行
rowNum=$(cat ${sqlFile}|wc -l)
#删除sql语句(默认为sql文件的行数)
$(sed -e "1,${rowNum}d" $exportFilePath -i)
exportFileRowNum=$(cat ${exportFilePath}|wc -l)
#删除关闭beeline连接(最后一行)
$(sed -e "${exportFileRowNum}d" $exportFilePath -i)
3.执行命令
sh exportHiveDataBySQL.sh */select.hql */resultData.csv
注: sed命令 是linux下利用脚本处理文件。详细参考:http://www.runoob.com/linux/linux-comm-sed.html