运行 通过 cli 使用包含特殊字符的列的配置单元查询

running a hive query via cli with columns containing special characters

我正在编写一个 bash 脚本,并且必须遍历大量包含特殊字符(主要是空格)的列的表 我想用下划线更改它们,到目前为止我有这段代码:

while read column;do

    beeline  -e  "use DB; ALTER TABLE X CHANGE `${column}` ${column// /_} STRING;"

done < ./file_with_column_names.txt

我将列名用反引号括起来,一切正常,但我收到错误消息,无论脚本尝试更改的列是否包含特殊字符:

FAILED: ParseException line 1:49 cannot recognize input near '<EOF>' '<EOF>' '<EOF>' in column type (state=42000,code=40000)

但是,来自 HUE 的相同查询 运行(显然 bash 变量替换为列名)工作正常。

不知道beeline查询失败的原因。有任何想法吗?谢谢!

好的,我找到原因了。反引号也由 BASH 解释,所以我也需要像这样转义它们

\`${column}\`