in reply to trying to execute "LOAD DATA INFILE" using DBI::Mysql

Here's some code that we use all day long to allow clients to refresh a database themself. Note: we have strong code ahead of this that validates the MIME type and file extension of their upload, and then code that checks the number of columns and names in the CSV file to match the DB table.

my $dbh = $self->dbconnect(server =>'master', db => 'admin'); my $stmt = qq~TRUNCATE TABLE $table~; #dump the old $dbh->do($stmt); $stmt = qq~LOAD DATA LOCAL INFILE ? INTO TABLE $table FIELDS TERMINATED BY "," LINES TERMINATED BY "\r\n" IGNORE 1 LINES~; my @bind = ("$path/$new_file_to_upload"); $dbh->do($stmt, undef, @bind); unlink "$path/$new_file_to_upload";

Watch the FIELDS/LINES TERMINATED BY... stuff.

Good luck!


—Brad
"The important work of moving the world forward does not wait to be done by perfect men." George Eliot