|
|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Juriy Goloveshkin 2:5020/1930.1 25 Aug 2000 16:15:39 To : Artem Chuprina Subject : DBI+здоровые таблицы -------------------------------------------------------------------------------- At 25 Aug 00 10:50:37, Artem Chuprina wrote to Juriy Goloveshkin: JG>> есть ли способ работать с _большими_ выборками. в идеале с 'select * JG>> from base' ну вот нужно именно это. для чего - не столь важно. JG>> то, что есть - порнография полная. mysql как я понимаю курсоров не JG>> знает, pgsql знает, но DBD::Pg по них не в курсе. В итоге - после JG>> execute вся эта байда норовит залезть в память. JG>> я сейчас обошелся дампом базы в текстовый файл и натравливанием на него JG>> перла. все здорово, но не криво ли это? AC> MySQL не база, но зато у нее есть limit. У PostgreSQL тоже есть, и можно AC> обойтись им, но есть ли уверенность, что DBD::Pg про них не в курсе? Чему AC> там быть в курсе-то? limits это не совсем то(точнее совсем не то ;), а вот за то, что ниже - спасибо. натолкнул на идею... AC> $sth = $dbh->prepare("FETCH CURSOR") (не помню, какой там синтаксис) AC> while (...) { $sth->> execute; $sth->> fetch; AC> } AC> не работает? что-то я протормозил ;) вот то, что получилось(расход по памяти - минимальный): >===== Start cut [/home/juriy/src/hjugo/address/test.pl] =====< #!/usr/bin/perl -w # $Id$ use strict; use locale; use POSIX qw(locale_h); use DBI; my $dbh=DBI->connect('dbi:Pg:dbname=ADDRESS') or die; $dbh->{AutoCommit}=0; $dbh->do('declare test cursor for select * from addresses'); while (my @test=$dbh->selectrow_array('fetch test')){ print "@test\n"; } $dbh->do('close test'); $dbh->disconnect; >===== End cut [/home/juriy/src/hjugo/address/test.pl] =====< Bye --- QDed beta v1.3.5/FreeBSD * Origin: QDed default origin. (2:5020/1930.1) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/386239a66e1e.html, оценка из 5, голосов 10
|