【shell】将hive查询结果输出文件
(2020-03-14 22:23:45)分类: 操作系统 |
需要自动化实现删除表操作,所以通过hive拼出sql语句后,输出到文件中,然后执行
#!/bin/bash
Vdatabase=$1
dt=$(date +"%Y-%m-%d" -d "-1day")
renameDT=$(date +"%Y%m%d" -d "-1day")
deleteDT=$(date +"%Y-%m-%d" -d "-8day")
echo $dt
echo $renameDT
echo $Vdatabase
echo $deleteDT
dirv=$(pwd)
echo $dirv
hive -e "
use dmx_bc;
select concat('use ',dbname,'\073 alter table
',tbl_name,' rename to ',
tbl_name,'_$renameDT','_atb\073')
from table where dt='$dt'
group by dbname,tbl_name ; "
> rename.hql
# > 表示每次覆盖这个文件; >>表示在文件中追加新的内容,用\073替代空格
hive -f rename.hql
备注:
这里使用\073的原因是:在函数处理字符串时,如果字符串中包含分号,会报错,因为分号是sql的默认结束符,在HDFS中识别不了,所以需要使用\073来表示,hive对分号识别没那么智能,遇见分号就认为语句结束了,所以需要使用\073代替
前一篇:【shell】修改数组分隔符
后一篇:【shell】常用小功能