Den sædvanlige måde, jeg gør disse ting på i pg, er:indlæs rådata, der matcher måltabel, i temp-tabellen (ingen begrænsninger) ved hjælp af copy, merge (den sjove del), profit.
Jeg skrev en merge_by_key funktion specifikt til disse situationer:
http://mbk.projects.postgresql.org/
Dokumenterne er ikke særlig venlige, men jeg vil foreslå at give det en god se.