我正在使用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技巧?
更新:根据araqnid的答案,以下是相关信息,供其他人参考:
\copy ...
执行前端(客户端)复制。这是运行SQL COPY命令的操作,但是与服务器读取或写入指定文件不同,psql读取或写入该文件并在服务器和本地文件系统之间路由数据。这意味着文件可访问性和权限属于本地用户,而不是服务器,并且不需要SQL超级用户权限。
更多信息在此处。