我正在尝试将表格的数据复制到文件中。我在本地Windows机器上有一个小型数据库表,这段代码没有问题。当我在开发环境(仍然是windows,不同的数据库)中使用它时,我收到错误。
我的standard_conforming_strings目前已关闭。
此查询:
COPY some_table TO 'C:\\temp\\test.csv' WITH CSV HEADER;
给出了这个错误:
WARNING: nonstandard use of \\ in a string literal
LINE 1: COPY t_table TO 'C:\\temp\\test.csv' WITH CSV HEADER;
^
HINT: Use the escape string syntax for backslashes, e.g., E'\\'.
ERROR: relative path not allowed for COPY to file
********** Error **********
ERROR: relative path not allowed for COPY to file
SQL state: 42602
我试过了:
'C:\temp\test.csv'
'C:\\temp\\test.csv'
'C:/temp/test.csv'
'C:\/temp\/test.csv'
在我的所有测试中,错误消息中的插入符^指向^' C :.
答案 0 :(得分:4)
您在 linux 而不是Windows上使用PostgreSQL。只需使用Windows客户端。
COPY
是服务器端命令。它期望服务器上的路径。该文件位于Windows客户端PC上,因此服务器无法访问它。
使用\copy
中的psql
代替。或者使用PgAdmin的CSV导入程序。
(较新的PostgreSQL版本会在错误消息中为您提供HINT
。)