Вы хотите выполнить запрос, хранящийся в файле, в операторе \copy
, т.е. выполнить этот запрос и сохранить выходные данные в файле?Это выполнимо.
Я сам сталкивался с этим вариантом использования и написал psql2csv
.Он принимает те же аргументы, что и psql
, и дополнительно принимает запрос в качестве параметра (или через STDIN) и печатает вывод в STDOUT.
Таким образом, вы можете использовать его следующим образом:
$ psql2csv [CONNECTION_OPTIONS] < My_SQL_FILE.sql > /home/myname/outputfile.txt
То, что psql2csv
в основном сделает, преобразует ваш запрос в
COPY ($YOUR_QUERY) TO STDOUT WITH (FORMAT csv, ENCODING 'UTF8', HEADER true)
и выполнит его через psql
.Обратите внимание, что вы можете настроить несколько вещей, таких как заголовки, разделитель и т. Д.