我使用PSQL运行包含在文件中一组简单的COPY语句:如何更改psql的有效用户?
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?
UPDATE:按照araqnid的答案,这里是为别人谁上台的有关信息:
\copy ...
执行前端(客户端)拷贝。这是一个运行SQL COPY命令的操作,但不是读取或写入指定文件的服务器,而是读取或写入文件,并在服务器和本地文件系统之间路由数据。这意味着文件的可访问性和权限是本地用户的可访问性和权限,而不是服务器,并且不需要SQL超级用户权限。
更多here。
+1用于建立区别:有一点是客户端(psql进程,与服务器无关,它自己的unix用户,或许甚至是它自己的计算机),另一件事是服务器(postgres服务器进程 - 又名postmaster)。你必须问问自己哪个应该访问文件系统。 – leonbloy 2010-05-06 11:12:26