PostgreSQL找不到在COPY命令中指定的文件名。

3
我尝试了这个:
COPY gemeenten 
  FROM 'D:\CBS_woningcijfers_2014.csv'
  DELIMITER ';' CSV

还有这个:

ERROR:  could not open file "D:\CBS_woningcijfers_2014.csv" for reading: No such file or directory

我已经加倍反斜杠,尝试了一个E字符串,在“\”替换为“/”,使用双引号而不是单引号,但现在我已经没有其他选项了。我确信文件存在。有人有任何想法吗?


3
你的文件是否与你的PostgreSQL实例在同一台机器上? - Nick
在一个无关的问题上,分隔符是分号还是CSV文件?@Nicarus给出的答案/评论最有可能是问题所在。 - Hambone
1个回答

7
如果文件和PostgreSQL数据库在同一台机器上,则文件的路径和/或名称不正确。
如果文件在本地计算机上,而数据库在另一台计算机上,则无法在SQL中使用COPY命令。您有两个主要选择来使其工作:
1)从本地计算机使用psql \copy。语法类似,但它将从本地传输到远程。文档非常有帮助:https://www.postgresql.org/docs/9.5/static/app-psql.html#APP-PSQL-META-COMMANDS-COPY 2)将文件上传到远程计算机,然后执行您的命令。只需确保引用了正确的路径和文件名即可。

1
好的回答。我已经在PostgreSQL邮件列表上发布了一个补丁,以帮助用户解决这个问题,因为这不是我第一次看到它了。希望它能进入PostgreSQL 10.0;现在对于9.6来说已经太晚了。链接:https://www.postgresql.org/message-id/CAMsr+YEqtD97qPEzQDqrCt5QiqPbWP_X4hmvy2pQzWC0GWiyPA@mail.gmail.com - Craig Ringer

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接