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

时间:2019-01-04 00:49:43

标签: sql postgresql pgadmin-4

我是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

4 个答案:

答案 0 :(得分:2)

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

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

答案 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']中,并且权限受到限制,并且可能没有管理权限就无法轻松更改,也无法更改。

祝你好运,编程愉快!