since it will report what is going wrong. I expect it's because a database table has a defined number of columns in it, and you don't have a defined number of columns in your dataset.$dbh = DBI->connect('DBI:SQLite:vodafone.db', { PrintError => 0, RaiseError => 1, AutoCommit => 0, }, );
As a side note, you'll likely get more traction in DB interaction if you prepare a query using placeholders. At the least, what you've written is subject to all sorts of escaping issues.
Update: Your issue is that you have $array5[$_] = "'\$row->[$_]'"; instead of a $array5[$_] = "'$row->[$_]'"; after you know your values, and are thus aren't interpolating your values. Again, placeholders would have prevented this issue.
my $sql = do { my $count = @$columns; my $qs = join ',', ('?') x $count; <<EOSQL INSERT INTO VoucherMRPDataTable_Frt_TariffModel VALUES ($qs) EOSQL }; my $query = $dbh->prepare($sql); while (my $row = $csv->getline($FH) ) { $query->execute(@$row); }
#11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.
In reply to Re: Text::CSV not able to execute insert query dynamically.
by kennethk
in thread Text::CSV not able to execute insert query dynamically.
by Ankur_kuls
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |