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

hive -e with as生产环境用法样例,第1张

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 方法名 , 后边必须加空格或括号,不加会报错。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4667040.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-06
下一篇 2022-11-06

发表评论

登录后才能评论

评论列表(0条)

保存