Как заменить (выбрать current_timestamp) именем файла, в котором находится этот же оператор выбора? - PullRequest
0 голосов
/ 18 апреля 2019

Я использую PSQL.Моя командная строка:

$\copy (select current_timestamp) to '/home/myname/outputfile.txt'

Я хотел бы знать, как заменить "(select current_Timestamp)" именем файла, в котором находится тот же оператор выбора?

пример:

$\copy (My_SQL_FILE.sql) to '/home/myname/outputfile.txt'

Я пробовал поискать в Google, но не могу найти ответ.

$\copy (my_Sql_file.sql) to '/home/myname/outputfile.txt'

не работает

1 Ответ

0 голосов
/ 22 апреля 2019

Вы хотите выполнить запрос, хранящийся в файле, в операторе \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.Обратите внимание, что вы можете настроить несколько вещей, таких как заголовки, разделитель и т. Д.

...