【问题标题】:Providing postgres windows system permission for copy (windows 8)提供postgres windows系统复制权限(windows 8)
【发布时间】:2014-03-23 21:17:15
【问题描述】:

我希望使用 pgadmin iii 复制 CSV 文件。对此非常陌生。

当我从查询生成器运行“复制”命令时,我收到以下错误:

 ERROR: could not open file 'C:\\Users\\Nick\\Documents\\CDR\\csv1.csv" for reading: Permission denied SQL state: 42501

我发现这提到了其他几个地方(例如hereherehere,一般的解决方法是在文件权限中添加“postgres”(人们还建议将 csv 移动到public 文件夹,但这会由于其他原因导致问题)。

但是当我尝试在 Windows 8 中将 postgres 添加到具有权限的人员时,当我检查名称时,我收到“找不到对象 postgres”错误。

如果我添加“所有人”,它会起作用,但出于显而易见的原因,我不想留下一个具有“所有人”访问权限的重要文件夹。

谁能告诉我如何在 Windows 8 中授予 postgres 权限?

谢谢!

【问题讨论】:

  • 不要认为你需要双反斜杠; PostgreSQL 使用 SQL 标准字符串,它不进行反斜杠转义。 (除非你使用 PostgreSQL 扩展 E'' 字符串)。
  • 太棒了!谢谢大家!导入工具确实可以工作,但我喜欢可复制的代码,所以我试图让事情从查询窗口工作。我会尝试“从标准输入复制”变体!

标签: postgresql csv copy


【解决方案1】:

Windows 版 PostgreSQL 的最新版本不使用postgres 操作系统帐户,而是使用NetworkService 系统帐户。这是在 Windows 中 PostgreSQL 服务的属性中指定的。这大概是the object postgres cannot be found 错误的原因。无论如何都不需要更改文件的权限。

最新版本的 pgAdmin (1.16+) 能够将 COPY 内容从客户端提供给服务器,而无需服务器打开文件。右键单击对象浏览器中的表名,然后查看名为Import 的菜单。在内部,这将使用 COPY FROM STDIN 变体。

如果这不令人满意,还可以选择使用psql.exe 命令行工具及其\copy 命令。此命令与 SQL COPY 命令具有相同的功能和语法,只是它将文件从客户端流式传输到服务器,而不是让服务器自己打开它。如果您是面向 CLI 的,请将其作为您的首选,它比 pgAdmin 更容易。

【讨论】:

猜你喜欢
  • 2012-02-06
  • 2013-05-04
  • 2015-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-08
相关资源
最近更新 更多