my @Columns = qw/ ro sham bo /; my $sql = sprintf "insert into (%s) values (%s) on duplicate key update ", join( ',', map { $dbh->quote_identifier($_) } @Columns ), join( ',', ( '?' ) x @Columns ); my $sth = $dbh->prepare($sql); while ( my $row = $csv_in->getline( $infh ) ) { $sth->execute( @{ $row } ); }