Как экспортировать набор результатов запроса postgres в формат, который можно импортировать с помощью psql?

Используя psql, есть ли способ сделать оператор select, где вывод представляет собой список операторов вставки, чтобы я мог выполнять эти операторы вставки где-то еще.

SELECT * FROM foo where some_fk=123; 

Должен выводиться

INSERT INTO foo 
(column1,column2,...) VALUES 
('abc','xyyz',...),
('aaa','cccc',...),
 .... ; 

То, что я могу перенаправить в файл, скажем, export.sql, который я могу затем импортировать с помощью psql -f export.sql. Моя цель - переместить экспорт результата оператора select в формат, который я могу импортировать в другой экземпляр базы данных с точно такой же структурой таблицы.


person ams    schedule 28.08.2013    source источник
comment
Почему бы не COPY в/из CSV-файла?   -  person Ihor Romanchenko    schedule 28.08.2013
comment
@IgorRomanchenko Мне нужно только подмножество таблицы, не знаю, как можно использовать COPY для ограничения подмножества таблицы, можете ли вы привести пример того, как можно использовать COPY в / из CSV.   -  person ams    schedule 28.08.2013


Ответы (1)


Взгляните на вариант --inserts для pg_dump

pg_dump -t your_table --inserts -f somefile.txt your_db

При необходимости отредактируйте полученный файл.

Для подмножества, как упомянул Игорь Романченко, вы можете использовать COPY с оператором SELECT.

Пример копирования в формате CSV.

COPY (select * from table where foo='bar') TO '/path/to/file.csv' CSV HEADER
person bma    schedule 28.08.2013
comment
Это приведет к дампу всей таблицы, мне нужно подмножество таблицы, результирующий набор запроса на выборку к сбрасываемой таблице. - person ams; 28.08.2013