Я использую psql для запуска простого набора операторов COPY, содержащихся в файле:
psql -d mydb -f 'wbf_queries.data.sql'
где wbf_queries.data.sql
содержит строки:
copy <my_query> to '/home/gvkv/mydata' delimiter ',' null '';
...
но я получаю ошибку об отказе в разрешении:
... ERROR: could not open file ... for writing: Permission denied
Я подключаюсь под своей учетной записью (gvkv), которая также является суперпользователем в PostgreSQL. Очевидно, что psql работает под другим (эффективным) пользователем, но я не знаю, как это изменить. Это можно сделать в psql или мне нужен какой-нибудь unix-fu?
ОБНОВЛЕНИЕ: Согласно ответу Аракнида, вот соответствующая информация для всех, кто приходит:
\copy ...
Выполняет внешнюю (клиентскую) копию. Это операция, которая запускает команду SQL COPY, но вместо того, чтобы сервер считывал или записывал указанный файл, psql считывает или записывает файл и направляет данные между сервером и локальной файловой системой. Это означает, что доступ к файлу и права доступа принадлежат локальному пользователю , а не серверу, и привилегии суперпользователя SQL не требуются.
Подробнее здесь .