首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >DBD::CSV -如何获取列名?

DBD::CSV -如何获取列名?
EN

Stack Overflow用户
提问于 2011-04-25 14:53:32
回答 1查看 1.6K关注 0票数 0

如何从表中获取列名?我的尝试没有起作用:

代码语言:javascript
复制
#!/usr/bin/env perl
use warnings;
use 5.012;
use DBI;

my $options  = { RaiseError => 1, PrintError => 0, f_ext => ".csv/r" };
my $dbh = DBI->connect( "dbi:CSV:", undef, undef, $options ) or die $DBI::errstr;

my $table = 'test';
$dbh->do( "CREATE TEMP TABLE $table ( id INT, size INT )" );
my $sth = $dbh->prepare( "INSERT INTO $table ( id, size ) VALUES( ?, ? )" );
$sth->execute( 1, 235 );
$sth->execute( 2, 42 );

use Data::Dumper;
say Dumper $dbh->{csv_tables}{$table}{col_names};

$dbh->{csv_tables}{$table} = { skip_first_row => 0 };
$sth = $dbh->prepare( "SELECT * FROM $table" );
$sth->execute;
my @first_row = $sth->fetchrow_array;
say "@first_row\n";

$sth = $dbh->column_info( '', '', $table, '' );
my $ref = $sth->fetchall_arrayref;
say "@$_" for @$ref;


# $VAR1 = undef;
#
# 1 235
#
# Can't call method "fetchall_arrayref" on an undefined value at ./so.pl line 25.
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-25 15:10:01

column_info方法应该是由驱动程序实现的,如果还没有实现,则会得到undef

相反,我会在您执行第一个查询之后查看$sth->{NAME}

顺便说一句,DBD::CSV是一个有趣的玩具,但如果您需要一个轻量级的一次性数据库,我强烈建议您使用DBD::SQLite。如果您只需要处理CSV数据,有几个不错的模块可以为您提供原始访问权限。在这两者之间,只剩下很少的用例可以让DBD::CSV更有意义了。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5776002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档