Бывало такое, что из всей таблицы нужно сделать дамп только определенных строк? Например, результата какого-либо запроса? Штатными средствами того же pg_dump это не сделать (а я столкнулся с этой проблемой именно при работе с PostgreSQL), но тут нашлась хитрость.
Допустим у вас есть таблица table1, в которой 50 тысяч записей, а вас нужно выбрать только те, у которых ID в диапазоне между 30000 и 40000, а потом из этого получить дамп (copy или inserts).
Т.е. фактически результат псевдозапроса:
select * from table1 where id between 30000 and 40000
Вы можете сделать временную таблицу, куда загрузить результаты вашего запроса
create table export_table1 as select * from table1 where id between 30000 and 40000;
А потом уже сделать дамп этой таблицы через
pg_dump -d testdb -t 'export_table1' --data-only --inserts > table1_30000_40000_dump.sql
После этого не забудьте удалить временную таблицу
drop table export_table1;
И теперь единственное, что вам нужно сделать — изменить в полученном дампе имя таблицы с export_table1 на table1. Это можно сделать с помощью sed в linux:
sed -i 's/export_table1/table1/g' table1_30000_40000_dump.sql
Собственно всё, задача выполнена