我正在使用PGAdmin 1.14.3。
当我尝试执行导入命令时:
COPY grad(country_code, postal_code, place_name, admin_name1, admin_code1, admin_name2, admin_code2, admin_name3, admin_code3, latitude, longitude, accuracy)
FROM 'C:\\Users\\denis\\Desktop\\BP2Project\\USA\\US.txt';
我得到了
错误:无法打开文件 “C:\ Users \ denis \ Desktop \ BP2Project \ USA \ US.txt”用于阅读: 权限被拒绝SQL状态:42501
我确实查找了其他similar个问题,但没有一个问题解决了我的问题。
我以超级用户“postgres”用户身份登录。我不明白为什么我缺少权限。我在Windows 7上。
答案 0 :(得分:55)
permissions article answer和Houari中提及的Flimzy是一个很好的参考资料,但直接答案(我使用的快速修复)是:
Everyone
。现在您可以运行需要访问这些文件的SQL COPY语句。
Everyone
条目。现在已将权限恢复为原来的状态。
答案 1 :(得分:8)
用户Postgres
必须对您要复制的文件具有读取权限。
查看this article,了解如何在Windows上修改文件的安全访问权限。
答案 2 :(得分:8)
好的,这是COPY命令工作的方式,将表格逐步导出为CSV。 请注意我正在使用pgAdmin 111。
右键单击包含权限被拒绝的数据文件的文件夹>,然后单击“属性”。
在“文件夹的属性”窗口中,选择“安全”选项卡。 单击“编辑”按钮。
在"文件夹的权限"打开的窗口,单击添加...按钮。 在屏幕中输入所有人,然后输入对象名称以选择"文字区域框。
单击“确定”,窗口将关闭。 验证默认的Read&通过上一个窗口中的>检查复选框将执行权限设置为允许。 单击“确定”,窗口将关闭。
单击“文件夹属性”窗口中的“应用”按钮。
这是一个棘手的部分,在myExports文件夹中创建一个包含所需名称的空白CSV文件.E.g employee.csv
然后像这样运行Copy命令:
将员工复制到' C:\ myExports \ employee.csv'分隔符',' CSV;
employee是此示例中的表名。
希望这有帮助。
答案 3 :(得分:2)
如果您不想向Everyone授予权限,则可以向启动该服务的帐户添加权限。在“控制面板” - “管理工具 - 服务”中,在“登录”中复制帐户名称。标签。 (在我的系统上,该帐户被称为“网络服务'”。然后与该用户共享具有CSV文件的文件夹,如上面的答案所示。
答案 4 :(得分:1)
我刚刚遇到了这个错误,即使在将 postgres 添加到文件夹和文件本身的权限后,它仍然无法正常工作。所以,我把文件放在一个公共文件夹中。在 Windows 上,这是路径:“C:\Users\Public\Documents\census.csv。”成功了!
答案 5 :(得分:0)
在不同的线程上响应这个问题是这样的 1.“告诉我你使用的命令” 2.“确保您拥有正确的权限” 3.“只需使用/复制”
我只是尝试在我尝试复制的cvs文件上向Everyone授予权限,但它仍然给我许可拒绝错误。我认为这个功能已被打破,并且已经在多个连续版本的Windows上连续多次发布。
答案 6 :(得分:0)
我正在处理更新记录和规范化数据的大型表,并且已经从CSV文件构建了SQL副本语句的例程,这些文件是从核心COPY public.table_1 TO(我在Samba中设置的共享文件夹){ {3}})'/ srv / samba / share / [filename] .csv'
我可以使用COPY table_1从'/srv/samba/share/test.csv'使用DELIMITERS','WITH NULL AS''CSV HEADER修改表后更新数据库;来自我的任何客户。
据我所知,关键是进行更新的客户端必须是超级用户,因为有4个服务器在这里一起工作,所以一切都必须与用户相关联Postgresql,Samba,UNIX和WINS 我的所有用户都在每个服务器上注册,用户名和密码相同,同质性是主要因素。
我已经尝试了很长时间,并尝试了各种命名约定,但最终它是https://www.youtube.com/watch?v=ndAYZ0DJ-U4让我感到厌烦就像是一个大开关点击。在你的股票和集团管理上已知777这是一个重要的学习曲线,但是,我花在这上面的时间将获得奖励......热爱Ubuntu热爱生活,热爱开源精神,但这可能只是睡眠剥夺... ...
答案 7 :(得分:0)
要解决此问题,您必须授予CSV文件权限,因为COPY命令中存在的CSV文件由服务器(而不是客户端应用程序)直接读取。因此,要使该文件可被服务器访问,我们必须给予完全的读写许可,以便Postgresql用户可以对该文件进行读写。
参考:article显示了分步过程。