

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/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;
   ```