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

Sql 我正在尝试复制文件,但收到错误消息,sql,postgresql,pgadmin-4,Sql,Postgresql,Pgadmin 4,我是postgres的新手,可能遗漏了一些愚蠢的东西,比如(我的目录的正确名称)。有人能指引我吗 我遵循Anthony DeBarros的《实用SQL》一书的指导 代码: 从中复制2010年美国各州 带有(格式)的“C:\Users\obella\OneDrive\Desktop\us\u countries\u 2010.csv” CSV,标题) 错误: 错误:无法打开文件 “C:\Users\obella\OneDrive\Desktop\us\u countries\u 2010.csv”

我是postgres的新手,可能遗漏了一些愚蠢的东西,比如(我的目录的正确名称)。有人能指引我吗

我遵循Anthony DeBarros的《实用SQL》一书的指导

代码:

从中复制2010年美国各州 带有(格式)的“C:\Users\obella\OneDrive\Desktop\us\u countries\u 2010.csv” CSV,标题)

错误:

错误:无法打开文件 “C:\Users\obella\OneDrive\Desktop\us\u countries\u 2010.csv”阅读: 权限被拒绝提示:复制自指示PostgreSQL服务器 进程来读取文件。您可能需要一个客户端工具,例如 psql的\副本。SQL状态:42501

从中复制2010年美国各州 带有(格式)的“C:\Users\obella\OneDrive\Desktop\us\u countries\u 2010.csv” CSV,标题)

预期:

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

实际:

错误:无法打开文件 “C:\Users\obella\OneDrive\Desktop\us\u countries\u 2010.csv”阅读: 权限被拒绝提示:复制自指示PostgreSQL服务器 进程来读取文件。您可能需要一个客户端工具,例如 psql的\副本。SQL状态:42501


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

如果要修复此问题,请打开任务管理器,然后单击“显示来自所有用户的流程”。查找图像名为postgres.exe的行(可能不止一行)。记住“用户名”列中的值(可能是
网络服务
)。打开文件的属性,在“安全”选项卡中添加该用户,并授予其读取权限


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

更改数据文件的位置和路径以驱动['D:\us\u countries\u 2010.csv']它将正常工作

此权限被拒绝,因为您的文件[us\u Countries\u 2010.csv]位于Windows驱动器的“C”驱动器['C:\Users\obella\OneDrive\Desktop\us\u Countries\u 2010.csv'],权限受到限制,没有管理权限无法轻松更改

祝你好运,编程愉快

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

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

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驱动器或任何其他可以正常工作的驱动器中。

从“C:\Users\obella\OneDrive\Desktop\us\u countries\u 2010.csv”分隔符、“csv头”复制表名(第1列,…)这是您想要的吗?从错误中,我认为您运行的不是psql?这是我们需要的答案。这可能仅适用于windows