1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
#!/usr/bin/perl
use strict;
use warnings;
use Test::More;
use DBI qw(:sql_types);
do "t/lib.pl";
my $cnt = join "" => <DATA>;
my $tbl;
my $expect = [
[ 1, "Knut", "white" ],
[ 2, "Inge", "black" ],
[ 3, "Beowulf", "CCEE00" ],
];
{ my $dbh = Connect ();
ok ($tbl = FindNewTable ($dbh), "find new test table");
}
if ($DBD::File::VERSION gt "0.42") {
note ("ScalarIO - no col_names");
my $dbh = Connect ();
open my $data, "<", \$cnt;
$dbh->{csv_tables}->{data} = {
f_file => $data,
skip_rows => 4,
};
my $sth = $dbh->prepare ("SELECT * FROM data");
$sth->execute ();
my $rows = $sth->fetchall_arrayref ();
is_deeply ($rows, $expect, "all rows found - mem-io w/o col_names");
}
if ($DBD::File::VERSION gt "0.42") {
note ("ScalarIO - with col_names");
my $dbh = Connect ();
open my $data, "<", \$cnt;
$dbh->{csv_tables}->{data} = {
f_file => $data,
skip_rows => 4,
col_names => [qw(id name color)],
};
my $sth = $dbh->prepare ("SELECT * FROM data");
$sth->execute ();
my $rows = $sth->fetchall_arrayref ();
is_deeply ($rows, $expect, "all rows found - mem-io w col_names");
}
my $fn = File::Spec->rel2abs (DbFile ($tbl));
open my $fh, ">", $fn or die "Can't open $fn for writing: $!";
print $fh $cnt;
close $fh;
note ("File handle - no col_names");
{ open my $data, "<", $fn;
my $dbh = Connect ();
$dbh->{csv_tables}->{data} = {
f_file => $data,
skip_rows => 4,
};
my $sth = $dbh->prepare ("SELECT * FROM data");
$sth->execute ();
my $rows = $sth->fetchall_arrayref ();
is_deeply ($rows, $expect, "all rows found - file-handle w/o col_names");
is_deeply ($sth->{NAME_lc}, [qw(id name color)],
"column names - file-handle w/o col_names");
}
note ("File handle - with col_names");
{ open my $data, "<", $fn;
my $dbh = Connect ();
$dbh->{csv_tables}->{data} = {
f_file => $data,
skip_rows => 4,
col_names => [qw(foo bar baz)],
};
my $sth = $dbh->prepare ("SELECT * FROM data");
$sth->execute ();
my $rows = $sth->fetchall_arrayref ();
is_deeply ($rows, $expect, "all rows found - file-handle w col_names");
is_deeply ($sth->{NAME_lc}, [qw(foo bar baz)], "column names - file-handle w col_names");
}
note ("File name - no col_names");
{ my $dbh = Connect ();
$dbh->{csv_tables}->{data} = {
f_file => $fn,
skip_rows => 4,
};
my $sth = $dbh->prepare ("SELECT * FROM data");
$sth->execute ();
my $rows = $sth->fetchall_arrayref ();
is_deeply ($rows, $expect, "all rows found - file-name w/o col_names");
is_deeply ($sth->{NAME_lc}, [qw(id name color)],
"column names - file-name w/o col_names");
}
note ("File name - with col_names");
{ my $dbh = Connect ({ RaiseError => 1 });
$dbh->{csv_tables}->{data} = {
f_file => $fn,
skip_rows => 4,
col_names => [qw(foo bar baz)],
};
my $sth = $dbh->prepare ("SELECT * FROM data");
$sth->execute ();
my $rows = $sth->fetchall_arrayref ();
is_deeply ($rows, $expect, "all rows found - file-name w col_names" );
is_deeply ($sth->{NAME_lc}, [qw(foo bar baz)],
"column names - file-name w col_names" );
# TODO: Next test will hang in open_tables ()
# 'Cannot obtain exclusive lock on .../output12660/testaa: Interrupted system call'
#ok ($dbh->do ("drop table data"), "Drop the table");
}
unlink $fn;
done_testing ();
__END__
id,name,color
stupid content
only for skipping
followed by column names
1,Knut,white
2,Inge,black
3,Beowulf,"CCEE00"
|