Если ваши таблицы организованы в различные схемы, то, возможно, вам подойдет следующее:
#!/usr/bin/env perl
use strict;
use warnings;
my $database_name = 'book_library';
my $query = <<"EOT";
SELECT n.nspname as table_schema,
c.relname as table_name
FROM pg_catalog.pg_class c
LEFT JOIN pg_catalog.pg_namespace n ON n.oid = c.relnamespace
WHERE c.relkind IN ('r','')
AND n.nspname NOT IN ('pg_catalog', 'information_schema')
AND n.nspname NOT LIKE '^pg_%'
;
EOT
$query =~ s/\n\s*/ /g;
my @results = `echo "$query" | psql -At $database_name`;
foreach (@results) {
chomp;
my ($schema, $table) = split /\|/, $_;
next unless ($schema && $table);
my $cmd = "pg_dump -U postgres -Fp -t $schema.$table -f $schema.$table.dump $database_name";
system($cmd);
}
Обратите внимание, что вам нужно будет правильно установить переменную $ database_name, и есть предположение, чтоиспользуете файл .pgpass.