我使用的是 PostgreSQL 9.4.1。
我的查询:
copy(select * from city) to 'C:\\temp\\city.csv'
copy(select * from city) to E'C:\\temp\\city.csv'
错误:不允许使用相对路径将COPY复制到文件中 ********** 错误 **********
错误:不允许使用相对路径将COPY复制到文件中 SQL状态:42602
我使用的是 PostgreSQL 9.4.1。
我的查询:
copy(select * from city) to 'C:\\temp\\city.csv'
copy(select * from city) to E'C:\\temp\\city.csv'
错误:不允许使用相对路径将COPY复制到文件中 ********** 错误 **********
错误:不允许使用相对路径将COPY复制到文件中 SQL状态:42602
TLDR: 确保您在复制到的位置也具有写入权限!
我遇到了完全相同的第一个错误,ERROR: relative path not allowed for COPY to file
,即使我使用了'/tmp/db.csv'
(这不是相对路径)。
在我的情况下,错误信息非常误导人,因为我在主机上,使用的是绝对文件路径,而且该位置已经存在。我的问题在于我使用了bitnami postgres:12 docker镜像,在容器中tmp文件夹属于root用户,而postgres和psql使用postgres用户。我的解决方案是在那里创建一个导出文件夹并将所有权转换为postgres用户:
mkdir /tmp/export
chown postgres:postgres /tmp/export
然后我成功地使用了COPY tablename TO '/tmp/export/db.csv';
。
虽然可能有点晚,但我认为这会很有帮助。
COPY DT1111 TO 'D:/TEST/DT1111_POST.CSV' DELIMITER ',' CSV HEADER;
'C:/temp/city.csv'
。 - user330315temp
写成全大写,也许能解决问题。 - Politank-Z