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

DCL*_*pes 4 sql postgresql pgadmin-4

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

我正在按照 Anthony DeBarros 的书上的说明进行操作,Practical SQL

代码:

从“C:\Users\obella\OneDrive\Desktop\us_counties_2010.csv”复制 us_counties_2010 和(格式 CSV,HEADER);

错误:

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

从“C:\Users\obella\OneDrive\Desktop\us_counties_2010.csv”复制 us_counties_2010 和(格式 CSV,HEADER);

预期的:

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

实际的:

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

小智 24

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

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

  • 这就是我们需要的答案。 (2认同)

sti*_*bit 8

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

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

或者按照消息的建议使用 psql's \copy