hive -e with as生产环境用法样例

hive -e "xxx" 可以运行引号内sql语句;

hive -f xxx 可以运行文件内sql语句;

with as 后可以写一个select的sql,可以用来构建一个临时表,表中的数据是自己写的sql生成的,然后可以用这个临时表的数据对其它表进行操作。

//with...as...需要定义一个sql片段,会将这个片段产生的结果集保存在内存中,后续的sql均可以访问这个结果集,作用与视图或临时表类似.

下方是 hive -e with as 用法样例,先用sql构建了一个临时表与数据,然后把临时表中的数据 插入/更新 到另一张表:

样例文件名:sync_data.sh

#实际执行的方法
function exe_sync(){
  hive -e "
    set hive.auto.convert.join = false;
    with tmp_user as (
      select 
      if(a.company || a.branch <> 'A70', a.comcode, '-') company,
      (case when a.branchtype = '1' then
        (case when a.agentgradekind = '' or a.agentgradekind is null then ''
        else substr(a.agentgradekind, 2, 4) end
        ) else a.F7 end
      ) roleFlag,
      a.agentname username,
      a.agentid id,
      null status

      from test.agentinfo a
    )
    
    INSERT overwrite table test.user  partition (import_date='$1')
    select
      $1,
      t.company,
      t.roleFlag,
      t.username,
      t.id,
      t.status,
      '001'
    from temp_user t  
  "
}

#执行,传一个参数,$1用
exec_sync 20211019

其它笔记:
1.hive的 insert into 与 insert overwrite 的区别:
insert into是普通的插入,insert overwrite会先清空表,再插入数据。

2.关于function,以下2种写法是正确的:

function exe_sync {}
function exe_sync(){}

以下1种写法会报错:

function exe_sync{}

function 方法名 , 后边必须加空格或括号,不加会报错。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

追逐梦想永不停

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值