我正在尝试复制文件,但收到错误消息
Posted
技术标签:
【中文标题】我正在尝试复制文件,但收到错误消息【英文标题】:I am trying to copy a file, but getting error message 【发布时间】:2019-01-04 00:49:43 【问题描述】:我是 postgres 的新手,可能缺少一些愚蠢的东西(我的目录的正确名称)。有人可以指导我吗?
我正在遵循 Anthony DeBarros 的 Practical SQL 书籍说明
代码:
copy us_counties_2010 from 'C:\Users\obella\OneDrive\Desktop\us_counties_2010.csv' with (FORMAT CSV, HEADER);
错误:
错误:无法打开文件 "C:\Users\obella\OneDrive\Desktop\us_counties_2010.csv" 用于阅读: 权限被拒绝 提示:COPY FROM 指示 PostgreSQL 服务器 读取文件的过程。您可能需要一个客户端工具,例如 psql 的 \copy。 SQL 状态:42501
复制 us_counties_2010 从 'C:\Users\obella\OneDrive\Desktop\us_counties_2010.csv' 与(格式 CSV,标题);
预期:
查询成功返回:3143 行受影响
实际:
错误:无法打开文件 "C:\Users\obella\OneDrive\Desktop\us_counties_2010.csv" 用于阅读: 权限被拒绝 提示:COPY FROM 指示 PostgreSQL 服务器 读取文件的过程。您可能需要一个客户端工具,例如 psql 的 \copy。 SQL 状态:42501
【问题讨论】:
copy table_name (column1,...) from 'C:\Users\obella\OneDrive\Desktop\us_counties_2010.csv' delimiter ',' csv header;
这是你想要的吗?
从错误中我认为你不是在 psql 中运行它?
【参考方案1】:
要做的就是: 通过右键单击该特定文件,转到该特定文件的 Properties。然后,转到显示的属性对话框的 安全 选项卡。点击编辑选项。 权限对话框出现,然后点击添加按钮。在“输入要选择的对象名称”描述框中键入“Everyone”(不带撇号),然后单击确定按钮。然后,确保选中“所有人的权限” 的所有复选框,只需勾选“完全控制” 复选框,以允许不受任何限制的控制访问。然后,Apply 和 OK 所有选项卡以应用所做的所有更改。
您现在可以运行/执行查询而不会出现任何错误。
【讨论】:
这就是我们需要的答案。【参考方案2】:正如消息告诉你的,Postres 不允许读取该文件。
如果您想解决这个问题,请打开任务管理器,然后单击“显示所有用户的进程”。查找图像名称为 postgres.exe
的行(可能不止一个)。记住“用户名”列中的值(可能是NETWORK SERVICE
)。打开文件的属性,在“安全”选项卡中添加该用户并授予他们读取权限。
或者按照消息提示使用psql
的\copy
。
【讨论】:
【参考方案3】: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 盘或其他任何可以完美运行的地方。
【讨论】:
【参考方案4】:将数据文件的位置和路径更改为 Drive['D:\us_counties_2010.csv' ] 它将起作用。
权限被拒绝,因为您的文件 [us_counties_2010.csv] 位于 Windows 驱动器的“C”驱动器 ['C:\Users\obella\OneDrive\Desktop\us_counties_2010.csv'] 中,并且权限受到限制并且可能没有管理权限就不会轻易改变和不可能。
祝你好运,编程愉快!
【讨论】:
【参考方案5】:如果你使用的是PSQL,请以管理员身份运行,那么使用COPY应该没有问题
【讨论】:
以上是关于我正在尝试复制文件,但收到错误消息的主要内容,如果未能解决你的问题,请参考以下文章
为啥我收到错误,因为不允许使用 nodejs 将文件从一个文件夹复制到另一个文件夹?