我有一个create table脚本,其中表名将在运行时决定。如何将值传递给sql脚本?
我正在尝试这样的事情
hcat -e "create table ${D:TAB_NAME} (name string)" -DTAB_NAME=person
但我一直都有错误。 我可以获得正确的语法吗?
答案 0 :(得分:0)
试试这个:
hcat -e 'create table ${hiveconf:TAB_NAME} (name string);' -DTAB_NAME=person2
以下两点需要注意:
在shell中,默认变量扩展为$
,因此在将${D:TAB_NAME}
传递给hcat解析器之前,$
将扩展为空。因此,要么逃避''
,要么使用强引语:hiveconf
。
使用D
代替{{1}}进行变量替换,因为引擎盖下的hcat仍然使用配置单元来解析命令。