dbd::csv with col_names but insert / delete / update fail

dbd::csv with col_names but insert / delete / update fail

am 31.12.2007 09:52:52 von access_you

I have a csv file. I defined the column names inside the perl script
but "sql insert" does not work. If the csv has column names, the
script (without col names defined) works.

sql select works on both csv with or without column names.

***** not working ****
/root/csv/db/b
1,peter
2,wilson

insert.pl
use DBI;
$dbh = DBI->connect("DBI:CSV:f_dir=/root/csv/
db;csv_sep_char=",";csv_quote_char=;csv_eol=\n")
or die "Cannot connect: " . $DBI::errstr;
$dbh->{'csv_tables'}->{'passwd'} = {'col_names' => ["id","passwd"]};
$dbh->do("insert into b (id, passwd) values (10,3333)");

[root@localhost csv]# perl insert.pl

Execution ERROR: No such column 'B.ID' called from insert.pl at 6.

***** working without error*******
id,passwd
1,peter
2,wilson

insert.pl
use DBI;
$dbh = DBI->connect("DBI:CSV:f_dir=/root/csv/
db;csv_sep_char=",";csv_quote_char=;csv_eol=\n")
or die "Cannot connect: " . $DBI::errstr;
$dbh->do("insert into b (id, passwd) values (10,3333)");

Re: dbd::csv with col_names but insert / delete / update fail

am 31.12.2007 18:24:01 von jeff

aclhkaclhk wrote:
> I have a csv file. I defined the column names inside the perl script
> but "sql insert" does not work.
That's because you defined the column names for a table called "passwd"
and then tried to do an insert on a table called "b". You need to
define the column names for the table you are trying to insert into.

--
Jeff

> If the csv has column names, the
> script (without col names defined) works.
>
> sql select works on both csv with or without column names.
>
> ***** not working ****
> /root/csv/db/b
> 1,peter
> 2,wilson
>
> insert.pl
> use DBI;
> $dbh = DBI->connect("DBI:CSV:f_dir=/root/csv/
> db;csv_sep_char=",";csv_quote_char=;csv_eol=\n")
> or die "Cannot connect: " . $DBI::errstr;
> $dbh->{'csv_tables'}->{'passwd'} = {'col_names' => ["id","passwd"]};
> $dbh->do("insert into b (id, passwd) values (10,3333)");
>
> [root@localhost csv]# perl insert.pl
>
> Execution ERROR: No such column 'B.ID' called from insert.pl at 6.
>
> ***** working without error*******
> id,passwd
> 1,peter
> 2,wilson
>
> insert.pl
> use DBI;
> $dbh = DBI->connect("DBI:CSV:f_dir=/root/csv/
> db;csv_sep_char=",";csv_quote_char=;csv_eol=\n")
> or die "Cannot connect: " . $DBI::errstr;
> $dbh->do("insert into b (id, passwd) values (10,3333)");
>
>
>
>