Cách thông thường tôi làm những việc này trong pg là:tải dữ liệu thô phù hợp với bảng đích vào bảng tạm thời (không có ràng buộc) bằng cách sử dụng sao chép, hợp nhất (phần thú vị), lợi nhuận.
Tôi đã viết một hàm merge_by_key dành riêng cho những trường hợp sau:
http://mbk.projects.postgresql.org/
Tài liệu không thân thiện lắm, nhưng tôi khuyên bạn nên cho nó một cái tốt nhìn.