【问题标题】:postgreSQL COPY command errorpostgreSQL COPY 命令错误
【发布时间】:2013-11-08 12:12:56
【问题描述】:

再次向大家问好,
我进行了各种搜索,但无法为以下简单问题找到合适/适用的答案:
在 pgAdminIII(Windows 7 64 位)上,我正在使用 SQL 编辑器运行以下命令:

COPY public.Raw20120113 FROM 'D:\my\path\to\Raw CSV Data\13_01_2012.csv';  

我为路径名尝试了许多不同的变体并验证了路径,但我不断得到:

错误:无法打开文件“D:\my\path\to\Raw CSV Data\13_01_2012.csv”进行读取:没有这样的文件或目录

有什么建议为什么会发生这种情况?
提前谢谢大家
佩特罗斯

更新!!

经过一些测试,我得出以下结论:我收到此错误的原因是路径包含一些希腊字符。因此,当 Windows 使用代码页 1253 时,控制台使用的是 727,而这一切都导致了混乱。所以,出现了一些问题,如果您愿意,可以回答它们或提示我其他问题?
1) 如何永久更改控制台的代码页?
2) 如何定义代码页是 SQL 编辑器? 再次感谢您,如果发布问题的地方不合适,我们深表歉意!

【问题讨论】:

  • 该文件路径是否存在 Postgres 服务器上?请注意,执行此命令的不是 pgAdmin III,而是 Postgres 数据库本身。
  • 您应该意识到 pgAdmin 在 client 上运行,但 COPY 命令在 server 上执行我>。这意味着您在复制命令中指定的路径应该指向 服务器 上的位置,而不是运行 pgAdmin 的机器上。
  • 我完全理解以上含义!但是,就我而言,一切都在本地运行,这就是为什么它对我来说很奇怪!
  • 在这种情况下阅读stackoverflow.com/questions/10079682/…(答案讨论standard_conforming_strings = on)。

标签: postgresql codepages postgresql-copy


【解决方案1】:

从命令行尝试 DIR "D:\my\path\to\Raw CSV Data\13_01_2012.csv" 并查看它是否有效 - 只是为了确保您的目录、文件名、扩展名等正确。

【讨论】:

  • 经过一些测试,我得出以下结论:路径名存在,但包含非ASCII(希腊)字符。这可能是问题吗?有什么解决方法吗?
  • 请查看psql 向下滚动到“Windows 用户须知”“通过输入 cmd.exe /c chcp 1252 设置代码页。(1252 是适用于德语;用您的值替换它。)"
  • 很遗憾你低估了我的理解和研究能力,但我会超越它......我已经把一切都设置好了,经过进一步的测试,我得出了以下结论:当我输入路径客户端(即在 psql 控制台中)它被正确解释。当我尝试在服务器端执行 SQL 命令(如 COPY over psql 或使用 pgScript 的查询工具)时,它失败了!服务器端使用的代码页是否有任何设置?谢谢!
  • 道歉 - 在更新中,您问“如何永久更改控制台的代码页?”,这就是我提供链接的原因。您还在路径名中提到了一些希腊字符。您可以尝试将文件移动到没有希腊字符的路径吗?这样我们就可以确定它是否是非 ASCII 字符问题。您已经提到“当我输入路径客户端(即在 psql 控制台中)时,它会被正确解释。”。还是……值得一试?
  • 没问题,再次感谢您 - 我已经将文件复制到包含非希腊字符的路径,并且命令正常工作!所以这显然是一个编码问题。作为最后的手段,我将尝试以编程方式将路径从 WIN1253 转换为 UTF-8,但这需要一些时间,因为我还不熟悉 pgScript。在那之前,我将在临时目录中工作。再次感谢您!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-01-31
  • 1970-01-01
  • 2015-10-30
  • 2011-08-15
  • 2014-07-16
  • 2020-05-24
相关资源
最近更新 更多