首页 > 解决方案 > HiveQL - 如何在 WHERE 子句中使用转义关键字?

问题描述

我试图通过仅选择满足特定条件的那些案例来查询表。它是在 R 脚本中从 Beeline 调用的查询。问题是必须满足这个条件的字段有一个保留字作为列名:'table'。

每当我在 AWS-EMR 集群中运行它时:

SELECT ... FROM ... WHERE `table` = 'something' AND year = 2018

我收到以下错误:

bash:表:找不到命令

连接到 jdbc:hive2://localhost:10000

连接到:Apache Hive(版本 2.3.2-amzn-0)

驱动程序:Hive JDBC(版本 2.3.2-amzn-0)

事务隔离:TRANSACTION_REPEATABLE_READ

. . . . . . . . . . . . . . . . 错误:编译语句时出错:失败:ParseException 行 1:242 无法识别表达式规范中“=”“某事”“和”附近的输入(状态 = 42000,代码 = 40000)

关闭:0:jdbc:hive2://localhost:10000

退出值:1

以粗体标记的两个块都应该是固定的。请注意,关键字“table”已经用反引号转义了。

我已经在网上搜索过,但仍然找不到合适的解决方案。任何帮助,将不胜感激。

标签: hiveqlamazon-emrbeeline

解决方案


正如@SamsonScharfrichter 在评论中指出的那样:

短期解决方法:尝试转义反引号,即 \`table\` 或者 \\`table\\`

这对我的问题有效。


推荐阅读