Perl:逐行从数据库表中读取

时间:2011-10-17 07:07:53

标签: perl dbi

是否有人使用DBI模块逐行读取数据库表?该表非常庞大,如果我尝试选择,我会一直耗尽内存。我正在使用oracle数据库

3 个答案:

答案 0 :(得分:2)

问题出在您的查询中。你必须限制你的结果集。

正如DavidO所说,LIMIT是一个解决方案。

my $sth = $dbh->prepare("SELECT whatever FROM wherever LIMIT 50");
$sth->execute;
my $row;
while (my @data = $sth->fetchrow_array) {
print "my $row(@row)";
sleep(1);
}
$sth->finish;
$dbh->disconnect;

答案 1 :(得分:1)

许多数据库在SQL中支持“LIMIT”子句。或者,您可以使用WHERE子句给定一系列主键,以约束每个查询返回的数据量。

答案 2 :(得分:1)

是。如果您不想立即获得 all 结果,请使用其名称中没有 all 的DBI函数来获取它们。如,

my $sth = $dbh->prepare("SELECT whatever FROM wherever");
$sth->execute;
while (my @data = $sth->fetchrow_array) {  # returns just one row
  # do stuff with @data
}