我可以很好地运行这个查询
CREATE TABLE db.table1 STORED AS PARQUET as
SELECT * FROM db.table WHERE UPPER(executing) = 'TRUE';
除非我从bashshell脚本运行它。我得到这个错误
# !/bin/bash
bash -c 'impala-shell -k -q "CREATE TABLE db.table1 STORED AS PARQUET as
SELECT * FROM db.table WHERE UPPER(executing) = 'TRUE';"'
错误:analysisexception:string和boolean类型的操作数不可比较:upper(正在执行)=true
我试过使用双引号,没有引号和小写没有运气
1条答案
按热度按时间doinxwow1#
单引号不能包含在shell中的单引号字符串中。单引号
TRUE
不包括在传递给的sql命令中impala-shell
; 第一个关闭首字母'
,第二个开始一个新的带引号的字符串,因此您的脚本相当于一种解决方案是使用双引号,就像我上面提到的那样,它允许您包含sql所需的单引号。
或者,使用
$'...'
引用论点-c
,在这种情况下,可以在字符串中包含正确转义的单引号。但是不清楚你为什么要使用
bash -c
而不是跑步impala-shell
直接作为: