You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将CSV批量数据导入Heroku Postgres?权限报错解决

解决Heroku Postgres批量导入CSV时的权限错误

问题核心

使用COPY FROM本地文件导入Heroku Postgres时触发权限报错:

SQL Error [42501]: ERROR: must be superuser or have privileges of the pg_read_server_files role to COPY from a file
Hint: Anyone can COPY to stdout or from stdin. psql's \copy command also works for anyone

本地Postgres能正常执行该命令,是因为本地环境下你是超级用户;但Heroku作为托管Postgres服务,会限制超级权限,不允许数据库服务器直接读取你的本地文件。

解决方案

方案1:使用psql的\copy客户端命令

\copy是psql的客户端命令,会先在本地读取CSV文件,再将数据发送到Heroku服务器,不需要服务器端的文件读取权限:

  1. 打开终端,通过Heroku CLI连接到你的Postgres实例:
    heroku pg:psql -a 你的应用名称
    
  2. 连接成功后,执行导入命令(需指定表的列,因为CSV第一列是序号,你的表无对应字段):
    \copy nlg_recipe(title, ingredients, directions, link, source, NER) FROM '/Users/Container/data_sets/nlg_recipe_dataset.csv' DELIMITER ',' CSV HEADER;
    

方案2:用DBeaver内置的导入工具

既然已通过DBeaver连接Heroku数据库,可直接用可视化导入功能:

  • 在DBeaver导航栏找到nlg_recipe表,右键选择「导入数据」
  • 选择本地CSV文件,在配置界面确认:
    • 分隔符设为逗号,
    • 勾选「使用表头」
    • 在「映射」步骤中,将CSV的title、ingredients等列对应到表的同名字段,忽略CSV第一列的序号
  • 点击开始导入即可

注意事项

你的CSV第一列为行号(0、1、2...),但nlg_recipe表无对应字段,因此导入时必须明确指定要导入的列,避免因列数不匹配报错。

内容的提问来源于stack exchange,提问作者Ahmad Mujtaba

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 19:27:28