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

用sed转义JSON内换行符并保留JSON间换行适配PostgreSQL COPY

解决PostgreSQL COPY处理JSON时的换行符问题

要实现仅转义JSON对象内部的换行符,保留对象之间的换行,推荐使用专门的JSON处理工具,避免正则匹配可能带来的结构解析错误:

方法一:使用jq(推荐)

jq可以正确解析JSON结构,自动转义内部换行并保持每个JSON对象为一行,完全适配PostgreSQL COPY的需求:

jq -c . input.json > output.json
  • -c 参数:以紧凑格式输出,每个JSON对象占一行
  • . 表示原样输出JSON内容,仅自动处理内部换行的转义

方法二:使用GNU sed(备选,适合无jq环境)

如果无法使用jq,可以用GNU sed的多行匹配功能,精准处理JSON内部的换行:

gsed -E ':a; /\{/{:b; N; /\}/!bb; s/\n/\\n/g; s/\\n\}$/\n/}' input.json > output.json

命令逻辑:

  • 匹配到JSON对象起始的{后,持续读取内容直到遇到对应的}
  • 将当前JSON对象内的所有换行替换为转义的\\n
  • 把JSON对象结尾}前的转义换行还原为实际换行,保留对象之间的分隔

处理后的文件可直接用PostgreSQL COPY命令导入:

COPY your_table (json_column) FROM '/path/to/output.json';

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 07:25:31