【问题标题】:How do I escape reserved words used as column names on HIVE?如何转义用作 HIVE 上的列名的保留字?
【发布时间】:2018-02-03 01:42:30
【问题描述】:

当我在 HIVE 中执行以下查询时,它给我的是当前日期,而不是 USER_INFO 表中的列值。

SELECT CURRENT_DATE 
FROM   USER_INFO
LIMIT 1; 

如何转义用作 HIVE 上的列名的保留字?

感谢和问候, 卡姆莱什

【问题讨论】:

    标签: hive escaping reserved-words


    【解决方案1】:

    知道了。

    有两种方法

    1 您可以在关键字前后使用撇号,如下所示。

    SELECT CURRENT_DATE 
    FROM   `USER_INFO`
    LIMIT 1;
    

    2 如果您使用 unix shell 执行它(即使用 sh 命令),您可以执行下面显示的设置

    hive.support.sql11.reserved.keywords=false
    

    希望这会有所帮助。

    感谢和问候, Kamleshkumar 古吉拉特语

    【讨论】:

    • 在修复之前投了反对票。 (1) 引用了错误的元素 (2.1) 这与shell无关。 (2.2) 这仅适用于某些关键字,而不是所有关键字
    • 此处显示的转义字符是“反引号”或“重音符号”(代码点 0060)而不是“撇号”
    【解决方案2】:

    为了查询列中的保留字(例如“users”或“current_date”)

    SELECT `CURRENT_DATE` 
    FROM   USER_INFO
    LIMIT 1; 
    

    注意撇号类型 `(正如 Wheezil 指出的那样,这个字符是“反引号”,但我想指出,在国际键盘中,这个字符相对难以输入)

    自答没问题,但因查询错误而产生误导,在此添加答案以供日后参考。

    【讨论】:

    • 此处显示的转义字符是“反引号”或“重音符号”(代码点 0060)而不是“撇号”
    猜你喜欢
    • 2021-05-24
    • 2022-08-13
    • 2021-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-27
    相关资源
    最近更新 更多