【问题标题】:Why doesn't Copy or \copy work for me in Pgsql?为什么 Copy 或 \copy 在 Pgsql 中对我不起作用?
【发布时间】:2022-05-05 21:48:56
【问题描述】:

我正在尝试将数据从 csv 导入 postgres。我尝试了以下方法并收到以下错误:

Copy TA_Files 
FROM 'C:\Users\ABla47\Documents\TA 11.19.21.csv'
DELIMITER ','
CSV HEADER;

错误:无法打开文件“C:\Users\ABla47\Documents\TA 11.19.21.csv" 供阅读:权限被拒绝

提示:COPY FROM 指示 PostgreSQL 服务器进程读取一个 文件。您可能需要一个客户端工具,例如 psql 的 \copy。

SQL 状态:42501

然后我尝试了:

\Copy TA_Files 
FROM '\Documents\TA 11.19.21.csv'
DELIMITER ','
CSV HEADER;

错误:“”处或附近的语法错误

第 1 行:\复制 TA_Files

谁能帮我知道我需要使用什么格式将数据从 csv 获取到表格中?

谢谢

【问题讨论】:

  • \copy 命令必须是单行,例如\Copy TA_Files FROM ...
  • 喜欢这个? \Copy TA_Files FROM '\Documents\TA 11.19.21.csv' DELIMITER ',' CSV HEADER 我仍然遇到语法错误...
  • 将该命令与语法错误一起添加到您的问题中。虽然我注意到选项之间没有逗号。
  • 忘记了关于逗号的部分,我意识到这是仍然允许的旧语法。如果我没记错的话,即使您在 Windows 上,您也需要执行 '/Documents/TA 11.19.21.csv'。我没有要测试的 Windows 安装。
  • \copy 只能在psql 中直接使用,您不能在 PL/pgSQL 或其他 SQL 客户端中使用它

标签: postgresql csv copy plpgsql psql


【解决方案1】:

这对我有用:
我将文件放在C:\Program Files\PostgreSQL\14\pgAdmin 4 目录中并从那里复制。

COPY superstore_people(person, region)
FROM 'C:\Program Files\PostgreSQL\14\pgAdmin 4\superstore_people.csv'
DELIMITER ','
CSV HEADER;

【讨论】:

    猜你喜欢
    • 2021-02-08
    • 2019-01-03
    • 2015-07-22
    • 1970-01-01
    • 2017-11-19
    • 2015-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多