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

BigQuery导出JSON字段时的双引号处理问题求助

解决BigQuery导出CSV时JSON字段双引号转义问题

核心原因

BigQuery UI导出CSV时,会遵循CSV标准规则:对包含双引号、逗号的字符串字段添加外层双引号,并将内部双引号转义为两个双引号。但下游系统若期望直接解析原始JSON格式,这种转义会造成解析失败。

可行解决方案

方法1:使用EXPORT DATA语句导出(推荐)

通过EXPORT DATA语句可精确控制CSV导出格式,禁用字段引号包裹,从根源避免双引号转义问题。

示例SQL:

EXPORT DATA
OPTIONS(
  uri = 'gs://你的存储桶路径/output-*.csv', -- 替换为你的GCS存储路径
  format = 'CSV',
  header = true,
  quote = '' -- 禁用引号包裹,关键参数
) AS
SELECT
  myStringField,
  myJSONField -- 直接使用JSON类型字段,无需额外转换
FROM
  `你的项目ID.数据集ID.目标表名`;

执行后将GCS上生成的CSV文件下载到本地,导出结果会符合预期:

myStringField,myJSONField
someStringValue,{"key1":"value1", "key1":"value2"}

方法2:UI导出应急预处理(不推荐)

若必须使用UI导出,可通过字符串替换临时规避转义,但需下游配合还原:

SELECT
  myStringField,
  REPLACE(STRING(myJSONField), '"', '<<QUOTE>>') AS myJSONField
FROM
  `你的项目ID.数据集ID.目标表名`

导出后再将CSV中的<<QUOTE>>替换回双引号即可,但该方法需额外步骤,仅作应急使用。

为什么PARSE_JSON/TO_JSON_STRING等函数无效?

  • TO_JSON_STRING()会将JSON对象转换为带转义双引号的字符串(如"{\"key1\":\"value1\"}"),导出时会再次转义,导致三重双引号。
  • PARSE_JSON()仅完成字符串到JSON类型的转换,导出时BigQuery仍会按CSV规则转义内部双引号。
  • STRING()转换JSON类型得到的原始JSON字符串,因包含双引号,会被UI导出的CSV规则自动包裹并转义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 18:01:25