in reply to Text::CSV not able to execute insert query dynamically.
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.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Text::CSV not able to execute insert query dynamically.
by Ankur_kuls (Sexton) on Sep 16, 2014 at 21:03 UTC | |
by kennethk (Abbot) on Sep 16, 2014 at 23:03 UTC | |
by Ankur_kuls (Sexton) on Sep 23, 2014 at 20:00 UTC | |
by kennethk (Abbot) on Sep 24, 2014 at 15:53 UTC | |
|
Re^2: Text::CSV not able to execute insert query dynamically.
by Anonymous Monk on Sep 17, 2014 at 14:03 UTC |