postgresql 我试图复制一个文件,但得到错误消息

fjaof16o  于 2023-03-29  发布在  PostgreSQL
关注(0)|答案(8)|浏览(169)

我是postgres的新手,可能缺少一些愚蠢的东西,比如(我的目录的正确名称)。有人能指导我吗?
我正在遵循安东尼·德巴罗斯的《实用SQL》一书的说明
验证码:

copy us_counties_2010 from  'C:\Users\obella\OneDrive\Desktop\us_counties_2010.csv' with (FORMAT CSV, HEADER);

错误:
错误:无法打开文件“C:\用户\obella\OneDrive\桌面\us_countie_2010.csv”进行阅读:许可被拒绝提示:COPY FROM指示PostgreSQL服务器进程读取文件。您可能需要一个客户端工具,例如psql的\copy。SQL状态:42501
从“C:\Users\obella\OneDrive\Desktop\us_counties_2010.csv”中复制us_counties_2010(格式CSV,标题);
预期:
查询成功返回:3143行受影响
实际:
错误:无法打开文件“C:\用户\obella\OneDrive\桌面\us_countie_2010.csv”进行阅读:许可被拒绝提示:COPY FROM指示PostgreSQL服务器进程读取文件。您可能需要一个客户端工具,例如psql的\copy。SQL状态:42501

yqlxgs2m

yqlxgs2m1#

要做的就是:右键单击该特定文件,转到该文件的“属性”。然后,转到显示的“属性”对话框的“安全”选项卡。单击“编辑”选项。出现“权限”对话框,然后单击“添加”按钮。键入“Everyone”(不带撇号),然后单击“确定”按钮。只需勾选 “完全控制” 复选框,确保 “Permissions for Everyone” 的所有复选框都已选中,以允许控件访问而不受任何限制。然后,ApplyOK 所有选项卡以应用所有已完成的更改。
您现在可以运行/执行查询而不会出现任何错误。

z3yyvxxp

z3yyvxxp2#

如消息所示,不允许Postres读取该文件。
如果你想解决这个问题,打开任务管理器,点击“显示所有用户的进程”。查找图像名为postgres.exe的行(可能不止一个)。记住“用户名”列中的值(可能是NETWORK SERVICE)。打开文件的属性,在“安全”选项卡中添加该用户并授予其读取权限。
或者按照消息中的建议使用psql\copy

62lalag4

62lalag43#

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驱动器或任何其他驱动器中,它将完美地工作。

sbtkgmzw

sbtkgmzw4#

将数据文件的位置和路径更改为驱动器['D:\us_counties_2010.csv']即可。
权限被拒绝,因为您的文件[us_countes_2010.csv]位于“C”驱动器['C:\Users\obella\OneDrive\Desktop\us_countes_2010.csv']中,这是一个Windows驱动器,并且权限受到限制,可能不容易更改,没有管理权限是不可能的。
祝你好运&编程愉快!

lo8azlld

lo8azlld5#

如果你使用的是PSQL,以管理员的身份运行它,那么当你使用COPY的时候就不会有任何问题了

ecfsfe2w

ecfsfe2w6#

在创建表格以及从CSV文件导入数据的情况下,我们可以跳过查询并使用程序本身。为此,只需右键单击左侧树中的表格并选择Import/Export...菜单项。

将出现一个窗口,其中滑块设置为“导入”。然后选择源文件并将格式设置为CSV。如果文件有标题,则将标题设置为“是”。剩下的唯一任务是选择分隔符(通常为逗号)。
单击“确定”后,将导入数据。
为了更好地理解,您可以参考原始文章. https://learnsql.com/blog/how-to-import-csv-to-postgresql/

n9vozmp4

n9vozmp47#

我知道这个问题已经很老了,但是对于任何可能面临同样问题的人来说,请按照下面的步骤来做--
1.右键单击要保存数据的文件夹,例如“D:\documents\smartguy\new_data\tasting_salt.csv”,在本例中右键单击新数据文件夹
1.单击 * 属性 *,然后单击 * 安全 * 选项卡。
1.单击“编辑”,然后单击“添加”。
1.在对象名称框中键入名称Everyone,然后单击确定。
1.在用户列表中突出显示“Everyone”,选中“Allow”下的所有框,然后单击“Apply”和“OK”。
应该如下所示.

qyuhtwio

qyuhtwio8#

copy us_counties_2010 from  'C:\Users\obella\OneDrive\Desktop\us_counties_2010.csv' with (FORMAT CSV, HEADER,DELIMITER ',');

用这个代码代替那个

相关问题