我是Postgres的新手,可能缺少一些愚蠢的东西(目录的正确名称)。有人可以引导我吗?
我正在按照Anthony DeBarros编写的实用SQL指南
代码:
从以下位置复制us_counties_2010 带有(FORMAT的'C:\ Users \ obella \ OneDrive \ Desktop \ us_counties_2010.csv' CSV,HEADER);
错误:
错误:无法打开文件 阅读“ C:\ Users \ obella \ OneDrive \ Desktop \ us_counties_2010.csv”: 权限被拒绝提示:COPY FROM指示PostgreSQL服务器 读取文件的过程。您可能需要客户端工具,例如 psql的\ copy。 SQL状态:42501
从以下位置复制us_counties_2010 带有(FORMAT的'C:\ Users \ obella \ OneDrive \ Desktop \ us_counties_2010.csv' CSV,HEADER);
预期:
查询成功返回:3143行受影响
实际:
错误:无法打开文件 阅读“ C:\ Users \ obella \ OneDrive \ Desktop \ us_counties_2010.csv”: 权限被拒绝提示:COPY FROM指示PostgreSQL服务器 读取文件的过程。您可能需要客户端工具,例如 psql的\ copy。 SQL状态:42501
答案 0 :(得分:2)
要做的就是: 通过右键单击该特定文件,转到该文件的属性。然后,转到显示的属性对话框的Security 选项卡。点击编辑选项。出现权限对话框,然后点击添加按钮。在“输入要选择的对象名称” 描述框中键入“所有人”(不带撇号),然后单击确定按钮。然后,通过勾选“完全控制”复选框,确保选中“所有人的权限”的所有复选框,以允许不受任何限制的控制访问。然后,Apply 和 OK 所有选项卡以应用所做的所有更改。
您现在可以运行/执行查询而不会出现任何错误。
答案 1 :(得分:2)
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 驱动器或任何其他可以完美运行的地方。
答案 2 :(得分:1)
该消息告诉您,不允许Postres读取文件。
如果要修复此问题,请打开“任务管理器”,然后单击“显示所有用户的进程”。查找图像名称为postgres.exe
(可能不止一个)的行。记住“用户名”列中的值(可能为NETWORK SERVICE
)。打开文件的属性,在“安全性”选项卡中添加该用户,并授予对其的读取访问权限。
或根据消息提示使用psql
的{{1}}。
答案 3 :(得分:0)
将数据文件的位置和路径更改为Drive ['D:\ us_counties_2010.csv'],它将起作用。
该权限被拒绝,因为您的文件[us_counties_2010.csv]位于Windows驱动器的“ C”驱动器['C:\ Users \ obella \ OneDrive \ Desktop \ us_counties_2010.csv']中,并且权限受到限制,并且可能没有管理权限就无法轻松更改,也无法更改。
祝你好运,编程愉快!