取代現有資料列來執行合併操作 - Amazon Redshift

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

取代現有資料列來執行合併操作

當您執行程序中詳述的合併操作時,請將建立和卸除臨時資料表以外的所有步驟置於單一交易中。如果有任何步驟失敗,您可以復原交易。使用單一交易也會減少認可的數目,如此可節省時間和資源。

取代現有資料列來執行合併操作
  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;