You might consider option (b) with the additional steps of ...
i) disabling the PK
ii) loading the data
iii) enabling the PK using the exceptions into clause to log PK violations into another table ... http://download-west.oracle.com/docs...3a.htm#1002528
iv) Deleting/moving/logging whatever you want with the violating rows
v) Renabling the PK