为什么DBD :: CSV会抱怨“松散的未转义报价”?

时间:2010-02-23 11:24:56

标签: perl csv dbi

为什么从__DATA__读取工作并从文件中读取不是(松散未转义的引用)?

#!/usr/bin/env perl
use warnings; use strict; use 5.010;
use DBI;

my $table = 'klassik_CD.csv';
print qx(cat $table);

print qq{\n"data" or "Enter" : };
chomp( my $aw = <> );

if ( $aw eq 'data' ) {
    $table = 'te_mp_fi_le.csv';
    open my $fh, '>', $table or die $!;
    while ( defined( my $row = <DATA> ) ) {
    print $fh $row;
    }
    close $fh or die $!;
}

my $dbh = DBI->connect( "dbi:CSV:", { RaiseError => 1 } );
$dbh->{csv_tables}{$table} = { col_names => [], sep_char => ';' };

my $sth = $dbh->prepare( "SELECT * FROM $table" );
$sth->execute;
while ( defined( my $row = $sth->fetchrow_hashref ) ) {
    say $row->{col1};
}

__DATA__
1;"Kammermusik fuer Blaeser";16;"DG";"eloquence";"dc129610"
2;"Requiem – Laudate Dominum Exultate, jubilate";19;"DG";"eloquence";"0a11f513"

输出:“数据”
1;“Kammermusik fuer Blaeser”; 16;“DG”;“eloquence”;“dc129610”
2;“Requiem - Laudate Dominum Exultate,jubilate”; 19;“DG”;“eloquence”;“0a11f513”

“data”或“Enter”:数据
Kammermusik fuer Blaeser
安魂曲 - Laudate Dominum Exultate,jubilate


输出:“输入”
1;“Kammermusik fuer Blaeser”; 16;“DG”;“eloquence”;“dc129610”
2;“Requiem - Laudate Dominum Exultate,jubilate”; 19;“DG”;“eloquence”;“0a11f513”

“数据”或“输入”:
DBD :: CSV :: st执行失败:
执行错误:读取文件时出现错误2034 ./klassik_CD.csv:EIF - 在/usr/local/lib/perl5/site_perl/5.10.1/DBD/CSV.pm第220行中无松动的未报价单 。

[对于声明“SELECT * FROM klassik_CD.csv”]在./zzzzzzzzzz.pl第27行。
DBD :: CSV :: st fetchrow_hashref失败:尝试在没有前面的execute()调用的情况下获取行,或者从./zzzzzzzzzz.pl第28行的非SELECT语句[for Statement“SELECT * FROM klassik_CD.csv”]获取行。 / p>

1 个答案:

答案 0 :(得分:0)

当我将文件从“klassik_CD.csv”重命名为“klassik_cd.csv”(全部小写)时,它可以正常工作(尽管没有“找不到文件”这样的消息)。