Hallo zusammen,
ich bin neu in Postgres und habe folgendes Problem.
Ich möchte Daten aus einer Tabelle in eine andere kopieren. Ist die Zeile schon vorhanden, soll ein Update gemacht werden, um evtl. noch nicht vorhandene Werte einzutragen. Wenn nicht, soll ein Insert gemacht werden.
In MySQL war das sehr einfach:
INSERT INTO logdata_aktuell_backup_3 (kanaldaten_kid,zeit,S05,S10,S15,S20,S25,S30,S35,S40,S45,S50,S55,S00) SELECT kanaldaten_kid,zeit,S05,S10,S15,S20,S25,S30,S35,S40,S45,S50,S55,S00 FROM logdata_aktuell_backup_2 ON DUPLICATE KEY UPDATE kanaldaten_kid = VALUES(kanaldaten_kid), zeit = VALUES(zeit), S05 = VALUES(S05), S10 = VALUES(S10), S15 = VALUES(S15), S20 = VALUES(S20), S25 = VALUES(S25), S30 = VALUES(S30), S35 = VALUES(S35), S40 = VALUES(S40), S45 = VALUES(S45), S50 = VALUES(S50), S55 = VALUES(S55), S00 = VALUES(S00)
Postgres bietet diese schöne Möglichkeit ja nicht. Ich habe jetzt schon diverse Upsertversuche hinter mir. Leide ohne Erfolg.
Die Tabellen haben folgende Struktur:
[TABLE=“width: 500”]
[TR]
[TD]id[/TD]
[TD]kanaldaten_kid[/TD]
[TD]zeit[/TD]
[TD]S00[/TD]
[TD]s05[/TD]
[TD]s10[/TD]
[TD]s15[/TD]
[TD]s20[/TD]
[TD]s25[/TD]
[TD]s30[/TD]
[TD]s35[/TD]
[TD]s40[/TD]
[TD]s45[/TD]
[TD]s50[/TD]
[TD]s55[/TD]
[/TR]
[TR]
[TD]124[/TD]
[TD]42[/TD]
[TD]2012-07-06 06:00:00[/TD]
[TD]22.25[/TD]
[TD]22.72[/TD]
[TD]16.3[/TD]
[TD]27.80[/TD]
[TD]30.52[/TD]
[TD]36.87[/TD]
[TD]41.86[/TD]
[TD]50.17[/TD]
[TD]55.20[/TD]
[TD]59.28[/TD]
[TD]66.94[/TD]
[TD]22.25[/TD]
[/TR]
[TR]
[TD]148[/TD]
[TD]42[/TD]
[TD]2012-07-06 07:00:00[/TD]
[TD]20.42[/TD]
[TD]16.38[/TD]
[TD]11.17[/TD]
[TD]12.82[/TD]
[TD]17.12[/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[TD][/TD]
[/TR]
[/TABLE]
Hat jemand eine Idee, wie ich das lösen kann?
Ich möchte möglichst nicht jede Zeile einzeln selektieren und dann ein eine Update/Insert probieren.
Gruß
Jens