Merge 语句
Merge 语句经常用在增量数据导入和数据更新的场景,在Merge语句的加持下,我们可以很方便的同时写出写出UPDATE和INSERT语句,也就是我们可以同时更新已经存在的记录和插入新的记录。
MERGE语句经常用在更新缓慢变更维度,需要注意的是有时候update insert
也被称为 UPSERT。
Merge 案例
MERGE语句我们需要指定一个匹配条件,然后可以执行两个操作
- 当source表的记录和目标表记录匹配的时候(一般情况下更新)
- 当source表的记录和目标表记录不匹配的时候(一般情况下插入)
当然我们也可以执行删除操作,下面是一个MERGE 的例子,需要注意的是Hive 从2.2 版本开始才支持MERGE
MERGE INTO merge_demo1 A
using merge_demo2 B
ON ( A.id = b.id )
WHEN matched THEN
UPDATE SET A.lastname = B.lastname
WHEN NOT matched THEN
INSERT (id,
firstname,
lastname)
VALUES (B.id,
B.firstname,
B.lastname);