不能 select 来自 csv 文件的列
Can't select a column from csv file
我使用 Perl 连接到带有 DBI 的 DBD::CSV,连接运行良好,当我启动时
SELECT * FROM dp_id.csv
它工作正常,但是当我想提取单个列时。
my $dbh = DBI->connect ("dbi:CSV:", undef, undef, { f_dir => "." });
my $query = " SELECT DpName from dp_id.csv";
my $sth = $dbh->prepare ($query);
$sth->execute ();
while (my @row = $sth->fetchrow_array)
{
print @row,"\n";
}
我有这个错误
Execution ERROR: No such column 'dpname' called from extract.pl at 20.
[for Statement " SELECT DpName from dp_id.csv"] at extract.pl line 20.
DBD::CSV::st fetchrow_array failed: Attempt to fetch row without a preceding execute () call or from
a non-SELECT statement [for Statement " SELECT DpName from dp_id.csv"] at extract.pl line 22.
这是 csv 文件的摘录:
kindOfInfo;DpName;TypeName;ID
interface;ALLARM;DPT_TS;344108
interface;POMP1;DPT_TS;7923082
默认情况下,DBD::CSV 假定您的文件以逗号分隔(因为 CSV 中的“CS”代表的是:-))
您的数据以分号分隔。所以你需要在创建连接时告诉DBD::CSV。
my $dbh = DBI->connect ("dbi:CSV:", undef, undef, {
f_dir => ".",
csv_sep_char => ';', # This is the important line
});
否则,DBD 会将您的数据视为名称为“kindOfInfo;DpName;TypeName;ID”的单列。
我使用 Perl 连接到带有 DBI 的 DBD::CSV,连接运行良好,当我启动时
SELECT * FROM dp_id.csv
它工作正常,但是当我想提取单个列时。
my $dbh = DBI->connect ("dbi:CSV:", undef, undef, { f_dir => "." });
my $query = " SELECT DpName from dp_id.csv";
my $sth = $dbh->prepare ($query);
$sth->execute ();
while (my @row = $sth->fetchrow_array)
{
print @row,"\n";
}
我有这个错误
Execution ERROR: No such column 'dpname' called from extract.pl at 20.
[for Statement " SELECT DpName from dp_id.csv"] at extract.pl line 20.
DBD::CSV::st fetchrow_array failed: Attempt to fetch row without a preceding execute () call or from
a non-SELECT statement [for Statement " SELECT DpName from dp_id.csv"] at extract.pl line 22.
这是 csv 文件的摘录:
kindOfInfo;DpName;TypeName;ID
interface;ALLARM;DPT_TS;344108
interface;POMP1;DPT_TS;7923082
默认情况下,DBD::CSV 假定您的文件以逗号分隔(因为 CSV 中的“CS”代表的是:-))
您的数据以分号分隔。所以你需要在创建连接时告诉DBD::CSV。
my $dbh = DBI->connect ("dbi:CSV:", undef, undef, {
f_dir => ".",
csv_sep_char => ';', # This is the important line
});
否则,DBD 会将您的数据视为名称为“kindOfInfo;DpName;TypeName;ID”的单列。