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

如何将每行是JSON的CSV文件导入PostgreSQL临时表?

解决含转义双引号的JSON行导入PostgreSQL临时表问题

针对你遇到的JSON行导入错误,以下两种方案可以解决问题:

方案一:使用TEXT格式导入(推荐)

因为你的文件每行是完整的JSON字符串,直接使用TEXT格式导入是最稳妥的方式——PostgreSQL会将每行内容作为单个jsonb字段的值处理,不会解析行内的逗号、双引号作为分隔符。

对应的COPY命令:

COPY temp_table(json_rec) FROM STDIN WITH (FORMAT TEXT);

在使用copyIn方法时,直接将文件的每行内容逐行写入即可。这种方式会自动忽略JSON内部的转义双引号,因为PostgreSQL会把整行当作合法的JSON字符串去解析,完全适配你提供的示例行格式。

方案二:配置CSV格式的正确参数

如果必须使用CSV模式,需要修改QUOTE和ESCAPE参数,避免PostgreSQL误将JSON内部的双引号识别为CSV字段的引号:

COPY temp_table(json_rec) FROM STDIN WITH (FORMAT CSV, QUOTE E'\x00', ESCAPE '\');
  • QUOTE E'\x00':将CSV的引号字符设置为空字符(不会出现在你的JSON内容中),彻底避免干扰JSON内部的双引号。
  • ESCAPE '\':指定反斜杠为转义字符,让PostgreSQL正确识别JSON里的转义双引号(比如\"会被解析为")。

注意事项

  • 确保文件中每行都是语法有效的JSON,如果存在残缺的JSON(比如缺失闭合括号、逗号错误),仍会触发解析错误。
  • 临时表的jsonb类型比json更适合后续的查询、索引操作,保持当前表定义即可。
  • 使用copyIn时,要保证写入的内容每行结尾带有正确的换行符,PostgreSQL依赖换行分割每条记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 00:25:35