首页 > 解决方案 > \copy 没有这样的文件或目录,即使该文件存在

问题描述

我正在尝试通过 psql 的\copy命令将一些数据复制到 csv 文件中。

我尝试使用的命令是

\copy (
<some query here>
) to '/Users/tomcaflisch/Downloads/tasks_data.csv' delimiter ',' with csv;

我得到的错误是:

/Users/tomcaflisch/Downloads/tasks_data.csv: No such file or directory

我验证了文件存在并且是可写的。

ls -al /Users/tomcaflisch/Downloads/tasks_data.csv
-rwxrwxrwx  1 tomcaflisch  staff  0 Jul 10 13:58 /Users/tomcaflisch/Downloads/tasks_data.csv

如果我更改为 `...to '/tmp/tasks_data.csv' delimiter ',' with csv;

相反,我得到了错误

ERROR:  syntax error at end of input
LINE 1: ... and t.run_id = r.run_id ) TO STDOUT delimiter ',' with csv;

标签: postgresqlpsql

解决方案


那么语法错误是由于这个:

to '/Users/tomcaflisch/Downloads/tasks_data.csv' delimiter ',' with csv;

--It should be:

to '/Users/tomcaflisch/Downloads/tasks_data.csv' WITH delimiter ',' csv;

--Or the new style:

to '/Users/tomcaflisch/Downloads/tasks_data.csv' WITH (delimiter ',', format csv);

尝试使用固定版本,看看它是否适用于 /tmp 文件,然后是 /users/* 文件。如果不适用于 /Users/* 文件,则爬上路径以查看每个目录级别的权限是否有问题。


推荐阅读