Postgres的:我想要一个表复制到它显示了一个文件“权限被拒绝”
我喜欢一个表复制到文件我的PostgreSQLPostgres的:我想要一个表复制到它显示了一个文件“权限被拒绝”
我尝试这个查询
COPY demo TO '/home/rck/Desktop/trial.csv'
但显示权限被拒绝
我也试过\副本,但它显示了语法错误
\COPY demo TO '/home/rck/Desktop/trial.csv'
的错误是
:\ “ LINE 1”ERROR处或附近语法错误“:\ COPY演示TO“/home/rck/Desktop/trial.csv
我还试图在终端
此命令chmod a+rX /home/rck/ /home/rck/desktop /users/rck/desktop/trial.csv
但它仍然显示相同的错误。
我可以知道如何将postgres表复制到文件的解决方案吗?
感谢
COPY demo TO '/home/rck/Desktop/trial.csv'
是服务器端的命令 - 应该运行作为超级用户权限的用户postgres
被设置在服务器端。
\COPY demo TO '/home/rck/Desktop/trial.csv'
是客户端psql
命令 - 不能从pgAdmin
左右运行...并相应的文件路径权限应被授予运行psql
用,而不是Postgres的用户...
您将要运行以下命令。我建议将它们放到一个* .sql文件中,并将其保存在项目的某个位置以供参考。改变你的喜好。假设,虽然你已经创建了一个数据库,它里面的表格演示,你需要的命令是:
create user <demouser> with password '<password>';
grant all privileges on database demo_db to <demouser>;
就可以启动Postgres的用psql的命令。根据您的操作系统,这些会稍微改变。对于Windows有一个-u命令来设置用户,但在Linux上使用sudo的完成:
sudo -u <superusername> psql -d <demo_db>;
:如果你使用的是默认的Postgres可能是保存你的表演示数据库。
然后,这个命令后,你应该看到提示
demouser=#
所以再运行
\copy demo to 'filename';
感谢您的回复,它的效果很好。我在ubuntu的终端里执行这个命令。这可能像在查询中一样在postgres或pgadmin3中执行,因为我想将其设置为触发器。这是可能的吗? –
它可以像使用COPY命令作为触发器一样完成。但是从文档中, 不要混淆COPY和psql指令\ copy。 \ copy从STDIN复制或复制到STDOUT,然后将数据提取/存储在psql客户端可访问的文件中。因此,使用\ copy时,文件可访问性和访问权限取决于客户端而不是服务器。 所以你需要配置COPY命令。虽然我没有测试过它,但我相信可以像触发其他触发器一样在触发器函数中使用COPY命令。 – Murphy4
你你确定你使用-u和-d标志从psql运行了这些命令,并以授予所需权限的用户身份进行连接。 \ copy命令应该可以工作。 – Murphy4
我是新来的postgresql。我怎样才能做到这一点?我也是postgresql的超级用户 –