下面是shell脚本中的配置单元查询。它所做的是从一个文本文件中一次读取一个表名,然后运行配置单元查询以向其中插入行。
当我用一个整数值(比如1)替换“i”时,它工作正常。尝试了一些方法来通过'我',但它不起作用。感谢您的帮助。
配置单元查询
for line in $(cat ../hive/ListofTableNames.txt);
do
eval "hive -e 'SET hive.exec.dynamic.partition.mode=nonstrict;
FROM sourcedb.$line
INSERT OVERWRITE TABLE targetdb.$line
SELECT from_unixtime(unix_timestamp()),**'I'**,*;'"
done
3条答案
按热度按时间esyap4oy1#
我会将配置单元ql放在一个文件中,比如myrequest.ql:
然后你的剧本会是这样的:
希望这会有帮助
lymgl2op2#
您需要在查询中转义单引号。
因为前面有一个开场白
SET
操作,所以它将取下一个引号作为结束引号。所以要避免这种情况,一定要使用转义符。另一个整洁的选项是,将查询写入一个单独的文件并另存为query.ql。并使用
-f filename.ql
用户建议1314742hs1rzwqc3#
我会努力的
将sql写入文件并使用--hivevar选项将变量传递给hql配置单元--hivevar i=bb-f your.hql
从脚本writesql到tmp文件,运行hive-f