Can anyone help identify why following code block will fetch only one row 
when csv_tables->{skip_rows} is set to 0?
A solution for this will go a long way toward solving a more complex 
scenario I'm attempting to help someone with.
I would think the actual vs expected indicates an issue with 'csv_eol' 
param but I've burned much time trying various settings.
I have switched row1 and row2 - script then shows just '4,1,2,3' output row.
Thanks.


Platform:      sparc SunOS (Solaris)
Perl version: 5.005_03

Data File contents (2 rows of comma-delimited data; where eol is a newline):
A,B,C,D
1,2,3,4


Actual Output:
data file is '<filename provided from command line>'
rows:
  D, A, B, C


Expected Output:
data file is '<filename provided from command line>'
rows:
  D, A, B, C
  4,1,2,3


Code:
#### BEGIN SCRIPT ######
use strict;
use DBI;
use SQL::Statement;
use SQL::Parser;

# =====================

#- name of csv file provided from command line
my $file = $ARGV[0] or die "syntax: perl $0 <csv filename>";
print "data file is '$file'\n";

# =====================

#-- create dbh
my $dbh = DBI->connect('dbi:CSV:csv_eol=\n;csv_sep_char=,');

# =====================

#-- load csv_tables hash
$dbh->{csv_tables}->{table}->{file} = $file;
$dbh->{csv_tables}->{table}->{skip_rows} = 0;
$dbh->{csv_tables}->{table}->{col_names} = [qw( col1 col2 col3 col4)];

# =====================

#-- establish query string
my $query = 'SELECT col4, col1, col2, col3 FROM table';

# =====================

#-- prepare query
my $sth = $dbh->prepare($query);

# =====================

#-- execute query
my $retcode = $sth->execute;

# =====================

#-- evaluate execute return code
die "query execution failed" unless ($retcode);
die "zero rows found" if ($retcode eq '0E0');

# =====================

#-- display any fetched rows
print "rows:\n";
my $rowref;
while (my $rowref = $sth->fetch) {
     print " ", join(', ', @{$rowref}), "\n";
}
#### END SCRIPT ######





andrew crum   --   [EMAIL PROTECTED]   --  senior software developer @ 
metagenix, inc.

Reply via email to