加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【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代替

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有