hiveql - 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”已经用反引号转义了。
我已经在网上搜索过,但仍然找不到合适的解决方案。任何帮助,将不胜感激。
解决方案
正如@SamsonScharfrichter 在评论中指出的那样:
短期解决方法:尝试转义反引号,即 \`table\` 或者 \\`table\\`
这对我的问题有效。
推荐阅读
- android - 以特定加速度连续旋转动画
- r - 使用 ROCit 绘制多条 ROC 曲线
- javascript - 如何将数据从 Angular 传输到 Node.js?
- amazon-web-services - 基于每个目标的请求计数,在 NLB 后面进行 ECS 自动缩放
- velocity - 用于 ECEF 到 WGS84 速度(地速)的开源 c# 库
- angular - Angular 8 - 如何使用 ngx-permissions 授权权限而不是角色?
- typo3 - “控制器不存在。反射失败。” TYPO3
- mysql - MySQL 默认查询
- corda - 使用 Corda `vaultQueryBy` stateRef 的 `txhash` 返回交易的所有状态
- java - 不知道为什么 typeConvertor 不起作用