1

Ich habe eine DW-Tabelle, in die ich Daten aus einer Staging-Tabelle einfügen. Die DW-Tabelle enthält 5 Spalte und ich überprüfe im Wesentlichen, ob eine Kombination aller 5 Spalten in der DW-Tabelle bereits vorhanden ist, während aus der Staging-Tabelle ausgewählt wird, wenn es existiert, mache ich keine Einfügung (oder Aktualisierung) und überspringe diese Zeile (wie es bereits existiert).Upsert in Rotverschiebung

Auf der anderen Seite, wenn es eine Zeile gibt, die ohne die Kombination der 5 Spalten existiert, dann mache ich einen Einsatz.

Gibt es einen Weg dies mit Upsert zu erreichen. Da ich hier keine Update-Operation mache (nur einfügen und löschen (was ignore ist)). Ich bin mir nicht sicher, ob Upsert die richtige Wahl wäre.

Antwort

2

Es gibt keine UPSERT in Redshift, siehe ihre documentation. Wenn Sie nur Zeilen in eine Tabelle laden möchten, die nicht bereits enthalten sind, sollte dies den folgenden Trick bewirken:

insert into target_table 
    select 
     * 
    from 
     source_table 
    left join 
     target_table using(col1, col2, col3, col4, col5) 
    where 
     target_table.col1 is null 
;