20 миллионов строк не так много. Если каждая отдельная строка не достаточно велика или вы отправляете по медленной сети, экспорт должен занимать минуты, а не часы.
Если вы хотите разделить одну таблицу, это лучше для COPY, а не для pg_dump.
psql -c 'copy pgbench_accounts to stdout'|split -l 2000000
Вы должны набрать его в командной строке терминала, так же, как и pg_dump. Он будет отправлять данные таблицы так же, как это делает pg_dump (за исключением того, что она выполняет только данные и только для одной таблицы), но затем команда linux split
разбивает их на файлы по 2e6 строк в каждом.
Ну, я вижу, вы не упомянули pg_dump в своем посте. Когда вы сказали «экспорт», что вы имели в виду? Я предполагал, что вы имели в виду pg_dump.