我有一个create table脚本,其中表名将在运行时决定。如何将值传递给sql脚本?我在尝试这样的事情
hcat -e "create table ${D:TAB_NAME} (name string)" -DTAB_NAME=person
但我总是出错。我能得到正确的语法吗?
wlsrxk511#
试试这个:
hcat -e 'create table ${hiveconf:TAB_NAME} (name string);' -DTAB_NAME=person2
这里有两点需要注意:在shell中,默认变量展开为 $ 所以你的 ${D:TAB_NAME} 在传递给hcat解析器之前就被扩展为空。所以,要么逃走 $ 或使用强引用: '' .使用 hiveconf 而不是 D 对于变量替换,hcat在hoods下仍然使用hive来解析命令。
$
${D:TAB_NAME}
''
hiveconf
D
1条答案
按热度按时间wlsrxk511#
试试这个:
这里有两点需要注意:
在shell中,默认变量展开为
$
所以你的${D:TAB_NAME}
在传递给hcat解析器之前就被扩展为空。所以,要么逃走$
或使用强引用:''
.使用
hiveconf
而不是D
对于变量替换,hcat在hoods下仍然使用hive来解析命令。