BigQuery从GCS加载JSON失败:完整JSON单行导入报错求助
问题根源
你的加载错误由两个关键问题导致:
- 源文件格式与加载配置冲突:你指定了
NEWLINE_DELIMITED_JSON格式,但test.json是多行的单个JSON对象。换行分隔JSON要求每行是一个独立的完整JSON记录,多行结构会触发解析错误。 - JSON结构与表Schema不匹配:目标表只有
json_data字段,但源JSON未将内容包裹在json_data键下,BigQuery无法识别如何映射数据到对应字段。
解决方案
方案一:修改源JSON文件(最简方案)
将test.json改为单行结构,把原JSON内容作为json_data字段的值:
{"json_data": {"a": 1, "b": 2, "c": 3, "d": 4}}
保持原有Python脚本配置不变,重新执行加载即可成功。
方案二:调整加载配置(无需修改源文件)
如果无法修改源文件,可调整加载配置直接将整个JSON文件内容导入json_data字段:
- 更新Python脚本中的
job_config:
job_config = bigquery.LoadJobConfig( schema=[ bigquery.SchemaField("json_data", "JSON") ], autodetect=False, source_format=bigquery.SourceFormat.JSON, ignore_unknown_values=True )
- 重新执行加载,BigQuery会将整个
test.json的内容作为一条记录插入到json_data字段中。
验证结果
加载完成后,可通过以下SQL确认数据是否正确导入:
SELECT json_data, json_data.a AS a_value, json_data.b AS b_value FROM `myprojectid.mydataset.mytable`
查询应返回完整的JSON对象及其嵌套字段的值。
内容的提问来源于stack exchange,提问作者justsomeguy
相关产品推荐
相关产品推荐

