如何将 JSON 文件上传到 BigQuery

Posted

技术标签:

【中文标题】如何将 JSON 文件上传到 BigQuery【英文标题】:How to upload the JSON file to BigQuery 【发布时间】:2021-04-07 22:18:26 【问题描述】:

我正在尝试使用以下数据将 JSON 文件上传到 BigQuery: enter image description here ,我首先使用下面的代码将 JSON 文件覆盖为新行分隔的 JSON:

cat healthrecord.json | jq -c '.[]' > healthrecordNDJSON.json

在代码之后,新的分隔 JSON 文件如下所示: enter image description here 但是,当我想将 NDJSON 文件上传到 BigQuery 时,出现此错误:

读取数据时出错,错误消息:无法解析 JSON:未找到活动字段。; ParsedString 返回错误

下面是我的 JSON 文件:

https://drive.google.com/file/d/1-H3fclfhSvtYS8f51hsnUyPEA1yPmwkr/view?usp=sharing

这里是 NDJSON 文件链接:

https://drive.google.com/file/d/1zG2JWd1gSEaxC15WpECh7ws_2l-7EWB0/view?usp=sharing

我在这里做错了什么?请帮我纠正这个!谢谢。

【问题讨论】:

【参考方案1】:

编辑:

由于只有一条记录,因此命令 jq -c '.[]' 不能用作 NDjson 转换: 此命令更改类似数组的 json 例如:

[
 
   "id": 1
 , 
 
   "id": 2
 ,
 
   "id": 3
 
]

放入每行一个元素的文件(没有封闭数组)

"id": 1,
"id": 2, 
"id": 3

在您的情况下它不起作用,您只需将 json 格式化为 NDjson。 以下命令对我有用:

cat healthrecord.json | jq -c . > healthrecordNDJSON.json

(你们真的很亲密^^)


你试过直接上传 healthrecord.json 吗?

您要上传的数据中只有一条记录,因此我不确定“ | jq -c '.[]' ”的行为。 (也许只用“jq -c”代替)。

如果这不起作用,我建议您实际分享您要上传的整个 json 记录以及您用来上传它的命令吗?

【讨论】:

是的,我已经尝试过并得到错误:读取数据时出错,错误消息:无法解析JSON:字符串意外结束;字符串意外结束;预期的关键。感谢您的建议,我会将我的 JSON 文件放入我的答案中。你能看看吗? 嘿,我把 JSON 文件上传到 google drive,这里是链接:drive.google.com/drive/folders/… 这似乎是您的 json 格式问题。您能否将其复制粘贴到您的问题中? 我把json文件的链接放在我的问题里,你能看一下吗? 好的,我明白你为什么没有把你的问题放在正文中^^

以上是关于如何将 JSON 文件上传到 BigQuery的主要内容,如果未能解决你的问题,请参考以下文章

将文件中以换行符分隔的 JSON 上传到 BigQuery

将 JSON 从 googlecloud 存储上传到 bigquery 时出现混淆

使用控制台将多条 JSON 记录加载到 BigQuery

使用空字典作为值将 JSON 文件加载到 BigQuery

每 5 分钟上传到 GCS 的文本文件如何将它们上传到 BigQuery?

Bigquery:使用字节数据上传 json 数据会出错