首页 > 解决方案 > 在 Hive 中执行 MERGE 语句时出错

问题描述

我正在尝试使用特定条件更新 table2,但在 HIVE 中使用 MERGE 语句时出现以下错误。

如果查询中有任何错误,请有人查看我的错误并提供解决方案或纠正我。

MERGE INTO TABLE1 A1
USING TABLE2 A2
ON A1.PROJECT_ID=A2.PROJECT_ID 
   AND A1.GREENFIELD_STATUS_CODE=A2.GREENFIELD_STATUS_CODE 
   AND A1.COUNTRY_CODE=A2.COUNTRY_CODE 
   AND A1.PROJECT_NME=A2.PROJECT_NME
WHEN MATCHED THEN UPDATE SET A1.DATETIME_STAMP=A2.DATETIME_STAMP;

对于上述查询,我​​收到此错误:

HiveServer2Error:编译语句时出错:FAILED:ParseException line 24:31 mismatched input '.' 期待 = 在 WHEN MATCHED THEN 子句中靠近 'A1'"

所以在这里我无法得到问题所在

标签: mergehivehiveql

解决方案


在您的match语句中删除A1别名,因为合并语句不需要别名。

试试这个语句:

MERGE INTO TABLE1 A1
USING TABLE2 A2
ON A1.PROJECT_ID=A2.PROJECT_ID 
   AND A1.GREENFIELD_STATUS_CODE=A2.GREENFIELD_STATUS_CODE 
   AND A1.COUNTRY_CODE=A2.COUNTRY_CODE 
   AND A1.PROJECT_NME=A2.PROJECT_NME
WHEN MATCHED THEN UPDATE SET DATETIME_STAMP=A2.DATETIME_STAMP;

有关 Hive-Merge 策略的更多详细信息,请参阅本文。


推荐阅读