从有效的csv文件中复制,但postgres无法找到

时间:2019-12-07 02:35:20

标签: sql postgresql

我尝试使用

将csv数据复制到表中
#+begin_src sql :engine postgresql :dbuser postgres  :dbpassword 1618 :database analysis
COPY us_counties_2010
FROM 'data/us_counties_2010.csv'
WITH (FORMAT CSV, HEADER);
#+end_src

报告错误

psql:/tmp/babel-x3dXSm/sql-in-zo3MDm:3: ERROR:  could not open file "data/us_counties_2010.csv" for reading: No such file or directory
HINT:  COPY FROM instructs the PostgreSQL server process to read a file. You may want a client-side facility such as psql's \copy.

错误"data/us_counties_2010.csv" for reading: No such file or directory不会消失,没有任何意义。

因为它确实存在

#+BEGIN_SRC shell
ls -l 'data/us_counties_2010.csv' | sed "s/$USER/me/g"
#+END_SRC

#+RESULTS:
: -rw-rw-r-- 1 me me 1170359 Dec  7 10:22 data/us_counties_2010.csv

出什么问题了? postgres开发人员是否发明了另一条禁止用户使用的神秘路径规则?

2 个答案:

答案 0 :(得分:1)

文件在哪里?您正在使用相对路径。

使用“复制”时,what you get is

  

将相对于服务器进程的工作目录(通常是集群的数据目录)而不是客户端的工作目录来解释路径。

使用\copy而不是COPY不仅可以获取客户端的权限,还可以在搜索文件时获得客户端的工作目录。

答案 1 :(得分:0)

文件权限?我看到“我”具有权限。什么用户是postgresql?