

 从补丁 198 开始，Amazon Redshift 将不再支持创建新的 Python UDF。现有的 Python UDF 将继续正常运行至 2026 年 6 月 30 日。有关更多信息，请参阅[博客文章](https://www.amazonaws.cn/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

# 替换现有行以执行合并操作
<a name="merge-replacing-existing-rows"></a>

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

**通过替换现有行执行合并操作**

1. 创建暂存表，然后使用要合并的数据填充它，如下面的伪代码所示。

   ```
   CREATE temp table stage (like target); 
   
   INSERT INTO stage 
   SELECT * FROM source 
   WHERE source.filter = 'filter_expression';
   ```

1.  使用 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});
   ```

1. 删除暂存表。

   ```
   DROP TABLE stage;
   ```