替换现有行以执行合并操作 - Amazon Redshift
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

替换现有行以执行合并操作

当您运行此过程中详述的合并操作时,请将所有步骤(但创建和删除临时暂存表除外)放在单个事务中。如果任何步骤失败,事务将回滚。使用单个事务还将减少提交次数,从而节省时间和资源。

通过替换现有行执行合并操作
  1. 创建暂存表,然后使用要合并的数据填充它,如下面的伪代码所示。

    create temp table stage (like target); insert into stage select * from source where source.filter = 'filter_expression';
  2. 使用 MERGE 执行与暂存表的内部联接,以更新目标表中与暂存表匹配的行,然后将所有与暂存表不匹配的剩余行插入到目标表中。

    我们建议您在单个 MERGE 命令中运行更新和插入操作。

    MERGE INTO target USING stage [optional alias] on (target.primary_key = stage.primary_key) WHEN MATCHED THEN UPDATE SET col_name1 = stage.col_name1 , col_name2= stage.col_name2, col_name3 = {expr} WHEN NOT MATCHED THEN INSERT (col_name1 , col_name2, col_name3) VALUES (stage.col_name1, stage.col_name2, {expr});
  3. 删除暂存表。

    drop table stage;