如何使用PostgreSQL中的相对路径从csv文件导入表?

时间:2018-10-16 19:20:58

标签: sql postgresql csv

我的COPY功能是:COPY NEWTABLE FROM './myfile.csv' csv HEADER;

但是当我尝试这样的事情时,它会告诉我No such file or directory。仅当我使用绝对路径时,它才起作用,但是出于我正在做的目的,我需要使用某种相对路径。

3 个答案:

答案 0 :(得分:0)

在运行cd命令之前,您始终可以对脚本中的相对路径执行COPY。 不知道是否有任何方法可以使COPY命令使用相对路径。

答案 1 :(得分:0)

COPY在服务器后端运行,这意味着它的pwd通常是群集的datadir-它尝试查找的任何相对路径都将相对于该位置。参见the docs

  

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

如果您使用的是psql,\copy将使用相对路径来做正确的事(它将使用您的pwd,而不是服务器后端的)

答案 2 :(得分:0)

在linux中,我使用psql:

\set localpath `pwd`'/myfile.csv'
COPY NEWTABLE FROM :'localpath' csv HEADER;