尝试从PGAdmin导入CSV文件时权限被拒绝

Too*_*ool 28 windows csv postgresql

我正在使用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';
Run Code Online (Sandbox Code Playgroud)

我得到了

错误:无法打开文件"C:\ Users\denis\Desktop\BP2Project\USA\US.txt"进行读取:权限被拒绝SQL状态:42501

我确实查了其他类似的问题,但没有一个能解决我的问题.

我以超级用户"postgres"用户身份登录.我不明白为什么我缺少权限.我在Windows 7上.

Kev*_*vin 59

权限这篇文章中所提到的答案胡阿里·Flimzy 是一个很好的参考材料,而是直接的答案(快速修复我使用)是:

  • 右键单击包含拒绝权限的数据文件的文件夹,然后单击" 属性".
  • 在"文件夹"的"属性"窗口中,选择" 安全"选项卡.
  • 单击" 编辑"按钮.
  • 在打开的"文件夹权限"窗口中,单击" 添加..."按钮.
  • 键入Everyone"输入要选择的对象名称"文本区域框.
  • 单击" 确定",窗口将关闭.
  • 验证上一个窗口中的默认读取和执行权限是否已通过复选框设置为允许.
  • 单击" 确定",窗口将关闭.
  • 单击" 文件夹属性"窗口中的" 应用"按钮.

现在,您可以运行需要访问这些文件的SQL COPY语句.

  • 完成后,返回"文件夹"的"属性"窗口.
  • 单击" 编辑"按钮.
  • Everyone在"组或用户名:"字段中选择条目.
  • 单击" 删除"按钮.
  • 在剩余的打开窗口上单击" 确定 ".

权限现在已经恢复到原来的状态.

  • 这应该是公认的答案,如果您将从 PG 中复制数据,请不要忘记选中“写入”框。 (3认同)

Hou*_*ari 9

用户Postgres必须对要从中复制的文件具有读访问权限.

查看本文,了解如何在Windows上修改文件的安全访问权限.

  • @Tool:*system user*"postgres"需要文件系统中的权限.不要与*数据库用户*"postgres"混淆.我们正在讨论*服务器*本地的文件,对吧?如果没有,你就不能以这种方式使用SQL`COPY`.在这种情况下,请查找[psql元命令`\ copy`](http://www.postgresql.org/docs/current/interactive/app-psql.html). (2认同)

fol*_*eph 9

好的,这就是COPY命令如何工作,将表导出为CSV,一步一步.请注意我正在使用pgAdmin 111.

  1. 创建要将表导出到的目标文件夹.例如C:\ myExports
  2. 按照以下步骤设置对此文件夹的读/写权限:

右键单击包含权限被拒绝的数据文件的文件夹>,然后单击"属性".

在"文件夹"的"属性"窗口中,选择"安全"选项卡.单击"编辑"按钮.

在打开的"文件夹权限"窗口中,单击"添加..."按钮.在"输入要选择的对象名称"文本区域框中键入Everyone.

单击"确定",窗口将关闭.通过上一个窗口中的> check复选框验证默认的"读取和执行"权限是否设置为"允许".单击"确定",窗口将关闭.

单击"文件夹属性"窗口中的"应用"按钮.

  1. 这是一个棘手的部分,在myExports文件夹中创建一个带有所需名称的空白CSV文件.Eg employee.csv

  2. 然后像这样运行Copy命令:

    将员工复制到'C:\ myExports\employee.csv'分隔符','csv;

employee是此示例中的表名.

希望这可以帮助.


Jon*_*s B 5

如果您不想向所有人授予权限,则可以向启动该服务的帐户添加权限。在控制面板 - 管理工具 - 服务中,复制“登录”选项卡中的帐户名称。(在我的系统上,该帐户称为“网络服务”。)然后与此用户共享带有 CSV 文件的文件夹,如上面的答案所示。