【问题标题】:Postgres: COPY TO errorPostgres:复制到错误
【发布时间】:2018-01-12 19:28:45
【问题描述】:

我需要帮助将我的 Postgres 表转换为 CSV 文件。首先,我输入

sudo su postgres (then I enter my password)
psql -d postgres -U postgres

终端长这样:

postgres=#

我输入了 COPY TO 命令以尝试创建一个包含表中所有信息的 .csv 文件,但出现错误:

postgres=# COPY venues TO '/usr/file.csv';
ERROR:  could not open file "/usr/file.csv" for writing: Permission denied

我也尝试使用 \copy 命令,但我得到:

postgres=# \COPY venues TO '/usr/file.csv';
/usr/file.csv: Permission denied

我读了几个答案,说我可能无权在某个目录中写入。这是真的吗?

此外,在 postgres 中,架构将 my_name 列为我尝试从(场所)导出信息的表的所有者。但是,这是当我以 postgres 用户身份登录时,我只能在以 postgres 用户身份登录时访问该表。

当我通过简单地输入“psql”登录到 postgres 时,我得到:

my_name=>

当我键入命令“\d”查看该用户下的表格时,我没有看到列出的场地表格。 有人可以帮我解决这个问题吗?提前谢谢你。

【问题讨论】:

  • "我可能没有权限写入某个目录。这是真的吗?"您的错误消息显示“权限被拒绝”,您怎么看?
  • 当不带参数输入psql 时,您将登录到与psql -d postgres -U postgres 不同的数据库,这就是它没有相同表的原因。
  • @Mat 我不确定“权限被拒绝”的具体用途。这就是我问的原因
  • @hsivru:你不问,为什么不直接去查?比在这里输入整个问题要快得多。
  • 我猜@hsivru 的意思是他不确定他是否无权写入文件或读取表或运行命令...嗯,它肯定是一个文件

标签: sql postgresql error-handling database-permissions


【解决方案1】:
postgres=# COPY venues TO '/tmp/file.csv';

应该为你工作

【讨论】:

  • 谢谢!这行得通。为什么我能够在 tmp 文件夹而不是 usr 文件夹中传输和创建文件?我确实更改了usr文件夹中文件的权限,但我得到了与上面写的相同的错误。
  • /usr 默认情况下用户不可写。它用于应用程序和系统文件。你为什么要写信给/usr?您肯定会使用\copy/home/myusername...?如果您没有指定绝对路径,那将会发生,例如\copy venues TO 'file.csv' 会将file.csv 存储在$HOME/file.csv 中。
  • @CraigRinger 我确实尝试写入我的 /home/myusername/ 文件中的一个文件,但我仍然收到“权限被拒绝”消息。我只是添加到 /usr 以检查我是否能够从 postgres 命令行创建一个文件——我不知道我不能添加到这个文件中。
  • /home/myusername/ 对于运行 posmaster 守护进程的用户不一定是可写的...这样 \copy 将起作用,因为 \copy 是 psql(客户端)命令,而 COPY 不会(服务器端)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2014-12-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多