我正在尝试复制文件,但收到错误消息

Posted

技术标签:

【中文标题】我正在尝试复制文件,但收到错误消息【英文标题】:I am trying to copy a file, but getting error message 【发布时间】:2019-01-04 00:49:43 【问题描述】:

我是 postgres 的新手,可能缺少一些愚蠢的东西(我的目录的正确名称)。有人可以指导我吗?

我正在遵循 Anthony DeBarros 的 Practical SQL 书籍说明

代码:

copy us_counties_2010 from  'C:\Users\obella\OneDrive\Desktop\us_counties_2010.csv' with (FORMAT CSV, HEADER);

错误:

错误:无法打开文件 "C:\Users\obella\OneDrive\Desktop\us_counties_2010.csv" 用于阅读: 权限被拒绝 提示:COPY FROM 指示 PostgreSQL 服务器 读取文件的过程。您可能需要一个客户端工具,例如 psql 的 \copy。 SQL 状态:42501

复制 us_counties_2010 从 'C:\Users\obella\OneDrive\Desktop\us_counties_2010.csv' 与(格式 CSV,标题);

预期:

查询成功返回:3143 行受影响

实际:

错误:无法打开文件 "C:\Users\obella\OneDrive\Desktop\us_counties_2010.csv" 用于阅读: 权限被拒绝 提示:COPY FROM 指示 PostgreSQL 服务器 读取文件的过程。您可能需要一个客户端工具,例如 psql 的 \copy。 SQL 状态:42501

【问题讨论】:

copy table_name (column1,...) from 'C:\Users\obella\OneDrive\Desktop\us_counties_2010.csv' delimiter ',' csv header;这是你想要的吗? 从错误中我认为你不是在 psql 中运行它? 【参考方案1】:

要做的就是: 通过右键单击该特定文件,转到该特定文件的 Properties。然后,转到显示的属性对话框的 安全 选项卡。点击编辑选项。 权限对话框出现,然后点击添加按钮。在“输入要选择的对象名称”描述框中键入“Everyone”(不带撇号),然后单击确定按钮。然后,确保选中“所有人的权限” 的所有复选框,只需勾选“完全控制” 复选框,以允许不受任何限制的控制访问。然后,ApplyOK 所有选项卡以应用所做的所有更改。

您现在可以运行/执行查询而不会出现任何错误。

【讨论】:

这就是我们需要的答案。【参考方案2】:

正如消息告诉你的,Postres 不允许读取该文件。

如果您想解决这个问题,请打开任务管理器,然后单击“显示所有用户的进程”。查找图像名称为 postgres.exe 的行(可能不止一个)。记住“用户名”列中的值(可能是NETWORK SERVICE)。打开文件的属性,在“安全”选项卡中添加该用户并授予他们读取权限。

或者按照消息提示使用psql\copy

【讨论】:

【参考方案3】:
copy us_counties_2010 (your column name)//(country_code, latitude, longitude, country, population)
 FROM 'D:\us_counties_2010 .csv' DELIMITER ',' csv HEADER

您的 csv 文件不应位于 C 盘。它无法访问您的 C 盘。将其存储在 D 盘或其他任何可以完美运行的地方。

【讨论】:

【参考方案4】:

将数据文件的位置和路径更改为 Drive['D:\us_counties_2010.csv' ] 它将起作用。

权限被拒绝,因为您的文件 [us_counties_2010.csv] 位于 Windows 驱动器的“C”驱动器 ['C:\Users\obella\OneDrive\Desktop\us_counties_2010.csv'] 中,并且权限受到限制并且可能没有管理权限就不会轻易改变和不可能。

祝你好运,编程愉快!

【讨论】:

【参考方案5】:

如果你使用的是PSQL,请以管理员身份运行,那么使用COPY应该没有问题

【讨论】:

以上是关于我正在尝试复制文件,但收到错误消息的主要内容,如果未能解决你的问题,请参考以下文章

如何正确运行 setup.py 文件? [复制]

错误:pysftp 中的“无法加载主机密钥”[重复]

为啥我收到错误,因为不允许使用 nodejs 将文件从一个文件夹复制到另一个文件夹?

如何将文件从 azure 存储复制到 vm

如何使用 NSFileManager 复制 UNIX 可执行文件?

当我收到本地文件的 CORS 错误时该怎么办? [复制]