The vendor supplied bulk loaders are generally consider faster than anything you can script in Perl. However, at least in the case of Oracle, I find their error reporting wanting. If you've got crappy datafiles and you need to pinpoint exact problems, then Oracle SQL*Loader just doesn't cut it.
For CSV's I use DBD::CSV to load the data into memory, validate, and then insert into Oracle via DBD::Oracle. In the future, I hope to use SQL::Parser and the new DBI methods for returning column definitions to do the validation more structured and cleanly. Thank you Tim Bunce and Jeff Zucker! John [EMAIL PROTECTED]