我尝试使用
将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开发人员是否发明了另一条禁止用户使用的神秘路径规则?
答案 0 :(得分:1)
文件在哪里?您正在使用相对路径。
使用“复制”时,what you get is:
将相对于服务器进程的工作目录(通常是集群的数据目录)而不是客户端的工作目录来解释路径。
使用\copy
而不是COPY
不仅可以获取客户端的权限,还可以在搜索文件时获得客户端的工作目录。
答案 1 :(得分:0)
文件权限?我看到“我”具有权限。什么用户是postgresql?