

 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="t_updating-inserting-using-staging-tables-"></a>

您可以透過使用 MERGE 命令有效地將新資料增加到現有的資料表中。建立臨時資料表，然後使用本節所述的其中一個方法從臨時資料表中更新目標資料表，即可執行合併操作。如需 MERGE 命令的相關資訊，請參閱 [MERGE](r_MERGE.md)。

[合併範例](merge-examples.md) 會使用名為 TICKIT 資料集的 Amazon Redshift 範例資料集。作為先決條件，您可以依照[開始使用一般資料庫任務](https://docs.aws.amazon.com/redshift/latest/gsg/database-tasks.html)中的指示，設定 TICKIT 資料表和資料。有關範例資料集的更多詳細資訊，請參閱[範例資料庫](https://docs.aws.amazon.com/redshift/latest/dg/c_sampledb.html)。

## 合併方法 1：取代現有資料列
<a name="merge-method-replace-existing-rows"></a>

如果您要覆寫目標資料表中的所有資料欄，執行合併最快的方式是取代現有的資料列。這只會掃描目標資料表一次，透過使用內部聯結來刪除將要更新的資料列。刪除資料列之後，這些資料列會透過臨時資料表中的單一插入操作被新資料列取代。

如果下列各項皆成立，請使用此方法：
+ 您的目標資料表和您的臨時資料表包含相同的資料欄。
+ 您想要將目標資料表資料欄中的所有資料取代為所有臨時資料表資料欄。
+ 您將在合併中使用臨時資料表的所有資料列。

如果任一條件不適用，請使用「合併方法 2：指定資料欄清單」，而不是使用 MERGE，如下一節所示。

如果您將不會使用臨時資料表中的所有資料列，請使用 WHERE 子句來篩選 DELETE 和 INSERT 陳述式，將未變更的資料列省略。不過，如果臨時資料表中的多數資料列將不會參與合併，我們建議在個別步驟中執行 UPDATE 和 INSERT，如本節稍後所述。

## 合併方法 2：指定欄位清單而不使用 MERGE
<a name="merge-method-specify-column-list"></a>

使用此方法來更新目標資料表中的特定資料欄，而不覆寫整個資料列。此方法需要的時間較先前的方法更久，因為它需要額外的更新步驟，並且不會使用 MERGE 命令。如果下列任一項成立，請使用此方法：
+ 並非目標資料表中的所有資料欄都是要更新的。
+ 臨時資料表中的多數資料列將不會用於更新。

**Topics**
+ [合併方法 1：取代現有資料列](#merge-method-replace-existing-rows)
+ [合併方法 2：指定欄位清單而不使用 MERGE](#merge-method-specify-column-list)
+ [建立暫時的預備資料表](merge-create-staging-table.md)
+ [取代現有資料列來執行合併操作](merge-replacing-existing-rows.md)
+ [指定欄位清單但不使用 MERGE 命令，以執行合併操作](merge-specify-a-column-list.md)
+ [合併範例](merge-examples.md)