I realise I havent given much thought to this.
Staging table is a nice idea but would involve a lot of work because I would have to create a staging table for each type of object I have.
But your second idea sounds good and it somehow escaped my mind. Thanks for that.
Will try it out.
There's also an other way to achieve it.
1. Create an ERRLOG table based on the table you want to insert in
2. Fire your INSERT statement with a little change to insert errors into that ERRLOG table
3. All the failed insert will go to ERRLOG table
4. You could then work on it and fix the duplicate keys as per your requirements
Find out more : INSERT