PostgreSQL 8.4中的一个简单的COPY语句

时间:2015-04-14 09:01:33

标签: postgresql postgresql-8.4

我正在尝试将表格的数据复制到文件中。我在本地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 :.

1 个答案:

答案 0 :(得分:4)

您在 linux 而不是Windows上使用PostgreSQL。只需使用Windows客户端。

COPY是服务器端命令。它期望服务器上的路径。该文件位于Windows客户端PC上,因此服务器无法访问它。

使用\copy中的psql代替。或者使用PgAdmin的CSV导入程序。

(较新的PostgreSQL版本会在错误消息中为您提供HINT。)