我有一个在“部分”列上分区的分区配置单元表。该表有两个分区值 part='good' 和 part='bad'。
我需要将记录从“坏”分区移动到“好”分区并覆盖“坏”分区以删除移动的记录。更复杂的是,我正在寻找一种在单个查询中执行此操作的方法,否则异常处理将很困难。
我尝试使用在同一个表上具有两个插入查询的多表插入来做到这一点,如下所示,
from tbl_partition
insert into tbl_partition partition (part='good') select a,b,c where a='a' and part='bad' -- this is where a record is moved from bad to good
insert overwrite table tbl_partition partition (part='bad') select a,b,c where part='bad' and a not in ('a'); -- Overwrite the bad partition excluding already moved record
但是上面的查询总是插入,而不是一个插入,另一个插入覆盖!
我什至尝试使用公用表表达式并使用公用表同时插入到该表中,但没有运气!
有没有其他方法可以在单个查询中实现,或者我在上述步骤中做错了什么?
请注意,我正在使用 hive 1.2 的 HDP 集群上执行此操作