PostgreSQL 8.4 中的简单 COPY 语句

A simple COPY statement in PostgreSQL 8.4

我正在尝试将 table 的数据复制到文件中。我在本地 windows 机器上有一个小型数据库 table,这段代码没有问题。当我在开发环境(仍然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:。

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

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

改用 psql 中的 \copy。或者使用 PgAdmin 的 CSV 导入器。

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