in reply to Text::CSV not able to execute insert query dynamically.

What is the error message you are getting? I think you'll get a lot of clarity if you swap your connector to:
$dbh = DBI->connect('DBI:SQLite:vodafone.db', { PrintError => 0, RaiseError => 1, AutoCommit => 0, }, );
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.

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

    hi...its not giving any error.. when I run the 1st insert query its storing the field values of csv file (like 34, 67, 29) but when I run the second insert statement instead...it giving me values like ($row->[0], $row->1 etc). also If I remove \ before $ its failing because it doesn't have any value of $row variable at that time...thanks

      Did you try the suggested code for your insert? Sorry for any lack of clarity in the explanation.

      #11929 First ask yourself `How would I do this without a computer?' Then have the computer do it the same way.

        Hi..sorry for late reply..was off work :) Thanks a lot..It works perfectly. But could you please explain it little further...how u used do block? Thanks again..:)

Re^2: Text::CSV not able to execute insert query dynamically.
by Anonymous Monk on Sep 17, 2014 at 14:03 UTC

    As a note; regarding "escaping issues", see Exploits