Perl: чтение из таблицы базы данных построчно - PullRequest
1 голос
/ 17 октября 2011

Есть ли какой-нибудь способ читать из таблицы базы данных построчно, используя модуль DBI?Таблица огромна, и мне не хватает памяти, если я пытаюсь сделать выбор.Я работаю с базой данных оракула

Ответы [ 3 ]

2 голосов
/ 17 октября 2011

Проблема заключается в вашем запросе. Вы должны ограничить набор результатов.

Как уже упоминалось в 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 голос
/ 17 октября 2011

Да.Если вы не хотите получать все результаты сразу, получите их с функцией 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
}
1 голос
/ 17 октября 2011

Многие базы данных поддерживают предложение «LIMIT» в SQL.Или вы можете ВЫБРАТЬ, задав диапазон первичных ключей с предложением WHERE, чтобы ограничить объем данных, возвращаемых за запрос.

...