my $rows = []; # cache for batches of rows
while( my $row = ( shift(@$rows) || # get row from cache, or reload
+cache:
shift(@{$rows=$sth->fetchall_arrayref(undef,10_00
+0)||[]}) )
) {
# do processing of row here ...
}
Of course, just because you're transferring the data from the DB driver to Perl space in batches of 10k doesn't mean that the database driver doesn't fetch all available rows onto your machine already.
Data::Stream::Bulk wraps this approach in an(other) API, but I never got warm with it. |