What you are talkin about here is a basic datawarehousing technique. This is what you should do:
1. Create a table that matches the target table. We will call this a staging table.
2. Truncate the staging table.
3. Run a sql statement to update or insert into the target table using t/sql sourcing the satging table. If you can tell which rows were updated (ie if you have an update field) you can run update, not found insert etc...
The advantage of this technique is being able to trace the data right the way through in case of any queries.
You can code this into a package, by connecting the staging table to the csv file and then calling a stored procedure with the target table population logic.
------------------------------
The Users are always right - when I'm not wrong!