Det vanliga sättet jag gör dessa saker i pg är:ladda rådata som matchar måltabellen i temptabellen (inga begränsningar) med hjälp av copy, merge (den roliga delen), profit.
Jag skrev en merge_by_key-funktion specifikt för dessa situationer:
http://mbk.projects.postgresql.org/
Dokumenten är inte särskilt vänliga, men jag skulle föreslå att ge det ett bra titta.