【问题标题】:for writing: Permission denied in postgres using COPY (SELECT * from <table>) To <filename> DELIMITER ',' CSV HEADER";写作:使用 COPY (SELECT * from <table>) To <filename> DELIMITER ',' CSV HEADER" 在 postgres 中拒绝权限;
【发布时间】:2014-10-04 04:01:01
【问题描述】:

我的要求是从 postgres 表数据中写入 csv,然后我面临以下问题,请提供一些解决此问题的提示。

org.postgresql.util.PSQLException: ERROR: could not open file 

当我使用这个查询时

COPY (SELECT * from <table>) To <filename> DELIMITER ',' CSV HEADER";

【问题讨论】:

  • 你读过fine COPY manual吗?
  • @dinesh COPY (SELECT * from mytable) To 'C:\csvfilename.csv' DELIMITER ',' CSV HEADER";
  • write 权限授予postgres 用户

标签: postgresql


【解决方案1】:

您似乎正在使用 PgJDBC。

您很可能希望使用从PGConnection 获得的the CopyManager 到/从Java 客户端到COPY。请参阅 this examplePgJDBC API docs

如果您打算对服务器文件系统执行COPY 或从服务器文件系统执行COPY,则必须分配适当的文件系统权限,以便PostgreSQL 服务器运行的用户(通常为postgres)可以读取/写入所需的位置。

【讨论】:

    【解决方案2】:

    将文件保存在每个用户可以保存的地方。在这种情况下,用户 postgres。

    Copy (Select * From tablename To '/tmp/file.csv' With CSV DELIMITER ',';
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      相关资源
      最近更新 更多