2016-04-28 6 views
2

In Redshift mache ich eine Masseneinfügung von Werten in eine Tabelle. Ich möchte jedoch nur die Werte in diese Liste einfügen, die noch nicht in der Tabelle vorhanden sind, um das Hinzufügen von Duplikaten zu vermeiden.Wie kann ich in Amazon Redshift Zeilen nur dann in Großbuchstaben einfügen, wenn sie nicht bereits vorhanden sind?

INSERT INTO $TEST_TABLE values (A, 1), (B, 2), (C, 3)

Wenn Tabelle bereits enthält (A, 1), möchte ich die Anweisung nur zum Einfügen (B, 2) und (C, 3).

Danke!

Antwort

2

Es gibt kein automatischer Weg, nur nur nicht vorhandene Zeilen einzufügen (oft UPSERT genannt = vorhandene Zeilen aktualisieren, neue Zeilen einfügen).

Sie könnten laden die Daten in eine temporäre Tabelle, dann tun Sie einen Befehl wie dies nur Zeilen einfügen, die nicht da sind:

INSERT INTO target 
SELECT * FROM temp 
WHERE temp.primary_key NOT IN (SELECT DISTINCT primary_key FROM target) 

Falls gewünscht, kann ein ähnliches Verfahren verwendet werden kann, auch auf Werte aktualisieren, wo sie bereits existieren