【发布时间】:2018-05-12 17:00:48
【问题描述】:
我在我的 postgres 服务器上创建了一个名为“new_test”的表,我正在尝试从本地 Mac 上名为“test.csv”的 CSV 文件复制到我的新表。我的“new_test”表和“test.csv”文件都有一个名为“compkey”的列。我在 csv 文件中只有 4 行。可能psql命令如下:
\copy new_test(COMPKEY) from ‘TEST.csv’ with delimiter ‘,’ csv header;
但我不断收到此错误消息:‘TEST.csv’: No such file or directory
我已尝试通过\cd 找到正确的文件路径,并确认我在带有\! ls 的正确文件夹中,看到列出的“TEST.csv”文件。我也试过我的 Mac 上的绝对路径,像这样:
\copy new_test(COMPKEY) from '/Users/the/rest/of/the/file/path/TEST.csv’ with delimiter ‘,’ csv header;
...但我收到相同的错误消息。我做错了什么或错过了什么?
【问题讨论】:
-
@VaoTsun 我看到的唯一区别是使用 COPY 而不是 /copy,对吗?我得到的错误是:
ERROR: must be superuser to COPY to or from a file HINT: Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone.我可以在启动 psql 时尝试sudo看看它是否有效。 -
否 - 错误的复制粘贴。请尝试
\copy new_test(COMPKEY) from '/Users/the/rest/of/the/file/path/TEST.csv' with delimiter ',' csv header;并且差异是绝对路径的前导斜杠 -
@VaoTsun 这也适用于我。我没有意识到前面的斜杠是用来表示绝对路径的。
标签: postgresql csv copy psql postgresql-9.6