【问题标题】:COPY FROM .csv file to a remote PostgreSQL Database (Running in Linux Server)COPY FROM .csv 文件到远程 PostgreSQL 数据库(在 Linux 服务器上运行)
【发布时间】:2020-02-12 18:58:54
【问题描述】:

我正在尝试使用以下命令将 .csv 文件中的数据导入托管在 Linux 服务器中的 PostgreSQL 数据库:

COPY areas_brasil FROM 'C:/Temp/RELATORIO_DTB_BRASIL_MUNICIPIO.csv' with delimiter '|' null 'NULL';

但我收到以下错误:

错误:无法打开文件 "C:/Temp/RELATORIO_DTB_BRASIL_MUNICIPIO.csv" 用于阅读:没有这样的文件 或目录提示:COPY FROM 指示 PostgreSQL 服务器进程 读取文件。您可能需要一个客户端工具,例如 psql 的 \复制。

.csv 文件位于客户端计算机(在 Windows 10 上运行)中,我对服务器中托管的数据库具有管理员访问权限(在 Linux - Debian 上运行)。

谢谢你帮助我!

【问题讨论】:

  • 您是否尝试过按照错误消息的提示进行操作:改用 \copy 命令? COPY 指的是 postgres 服务器目录,而 \COPY 文件路径是相对于当前工作目录的。

标签: sql linux postgresql csv


【解决方案1】:

欢迎来到 SO。

COPY .. FROM 'path' 假定文件位于服务器中。如果您希望在不将文件放入数据库服务器的情况下执行 COPY,则可以使用 \copy 或仅使用客户端控制台中的 STDINpsql,例如在 unix 系统中(对于 Windows,您必须找到 cat| 等效项):

$ cat file.csv | psql yourdb -c "COPY areas_brasil FROM STDIN DELIMITER '|';"

psql 内部使用\COPY 可以这样完成:

\COPY areas_brasil FROM '/home/jones/file.csv' DELIMITER '|';

查看answer了解更多详情。

【讨论】:

    猜你喜欢
    • 2018-03-27
    • 1970-01-01
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    • 2018-10-08
    • 2018-09-09
    • 1970-01-01
    • 2016-10-10
    相关资源
    最近更新 更多