http://www.perlmonks.org?node_id=11127501


in reply to Re^2: Posgres batch read with DBI?
in thread Posgres batch read with DBI?

This works for me:
#!/usr/bin/perl use warnings; use strict; use feature qw{ say }; use DBI; my ($dbname, $user, $password) = @ARGV; my $db = 'DBI'->connect('dbi:Pg:dbname=' . $dbname, $user, $password, {AutoCommit => 0}); $db->do('CREATE TABLE t (id INT, name TEXT)'); my $populate = $db->prepare('INSERT INTO t (id, name) VALUES (?,?)'); my $max = 250_000; for my $i (0 .. $max) { $populate->execute($i, join "", map chr, map 64 + int rand 26, 1 . +. 10); print "$i\r"; } my $from = 0; my $fetch = $db->prepare('SELECT * FROM t LIMIT ? OFFSET ?'); while ($from <= $max) { $fetch->execute(1000, $from); while (my @row = $fetch->fetchrow_array) { say join "\t", @row; } say '---'; $from += 1000; } $db->disconnect;
map{substr$_->[0],$_->[1]||0,1}[\*||{},3],[[]],[ref qr-1,-,-1],[{}],[sub{}^*ARGV,3]