@akretschmar Danke erstmal…
Hab mir mal die Funktion aus der Doku angeschaut,aber nicht auf mein Problem anpassen können.
Ich weiss nicht wie ich eine select anweisung nach dem set einbauen könnte.
Das ist aber erforderlich um auf alle Datensätze der neuen Tabelle, die schon in der Summary_table vorhanden sind ein update durchzuführen (bzw zu aggregieren).
Ausserdem habe ich da bedenken.Wenn meine neue table 500000 Einträge hat ,bei welchen teilweise ein update durchgeführt wird und bei den anderen ein insert, bekomme ich doch ziemlich sicher eine Exception oder?
@ads
also das Problem ist ein bisschen vereinfacht so zu verstehen:
ich hab eine old_table :
srcip dstip value
a b 10
c d 20
b a 5
a b 5
welche mit einem Befehl wie :
create table “summary” as
( select srcip,dstip , sum(value)as value from
“old_table” group by srcip,dstip);
zu
srcip dstip value
a b 15
c d 20
b a 5
wird.
Dann bekomme ich stündlich neue Tabellen hinzu die,die gleiche Form und auf die ich ebenfalls ein group by ausführe.
Eine “summary_new” table würde dann z.B. folgendermaßen aussehen:
srcip dstip value
g f 40
a b 8
c d 20
b a 11
h i 2
Wobei man davon ausgehen kann das die summary tabelle mit der zeit riesig wird.
Nun sollen summary wie auch die stündlichen summary_new Tabellen zusammengeführt werden und in unserem Fall eine solche Form bekommen:
srcip dstip value
a b 23
c d 40
b a 16
g f 40
h i 2
Das einzige was mir dazu einfällt ist zwischen summary und summary_new ein intersect auszuführen um ein Update zu erhalten und ein EXCEPT um ein Insert zu erhalten.
Also soetwas ähnliches,was aber leider nicht funktioniert:
UPDATE summary set SELECT * FROM summary_new INTERSECT SELECT * FROM summary
Aber ich weiss nicht wie ich die Idee mit einem Postgres- Befehl umsetzen könnte und ob die Idee irgendetwas taugt.
Grüße
Sophie