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 ”(不带撇号) ,然后单击“确定”按钮。然后,确保选中“所有人的权限”的所有复选框,只需勾选“完全控制”复选框即可允许不受任何限制的控制访问。然后,应用并确定所有选项卡以应用所做的所有更改。
您现在可以运行/执行查询,不会出现任何错误。
正如消息告诉您的那样,不允许 Postres 读取该文件。
如果要修复该问题,请打开任务管理器,然后单击“显示所有用户的进程”。查找具有图像名称的行postgres.exe(可能不止一个)。记住“用户名”列中的值(可能是NETWORK SERVICE)。打开文件的属性,在“安全”选项卡中添加该用户并授予对它们的读取访问权限。
或者按照消息的建议使用 psql's \copy。