如何将此 JSON 数据导入 postgresql 表?
Posted
技术标签:
【中文标题】如何将此 JSON 数据导入 postgresql 表?【英文标题】:How to import this JSON data into a postgresql table? 【发布时间】:2021-10-08 05:18:34 【问题描述】:我有以下 JSON:
"ticket":
"ticket":"61086762bb68d90001148fe9",
"timestamp":"2021-08-02T18:45:06.581-0300"
,
"serie":
"measurement":
"nemo":"RT",
"description":"Real Time"
,
"tagSet":
"Granularity":"1h",
"Facility":"382"
,
"fieldSet":
"EnvTemperature":"°C",
"HorizIrrad":"W/m²"
,
"values":[
"tagSet":
"Facility":"382",
"Granularity":"1h"
,
"fieldSet":
"EnvTemperature":7.0,
"HorizIrrad":632.0
,
"time":"2021-08-02T11:00:00.000-0300"
,
"tagSet":
"Facility":"382",
"Granularity":"1h"
,
"fieldSet":
"EnvTemperature":10.0,
"HorizIrrad":884.0
,
"time":"2021-08-02T12:00:00.000-0300"
]
我想知道如何将“值”部分中的“EnvTemperature”、“HorizIrrad”和“时间”导入如下表格:
time | EnvTemperature | HorizIrrad |
---|---|---|
2021-08-02 11:00:00 | 7 | 632 |
2021-08-02 12:00:00 | 10 | 884 |
或者像这样:
time | Fieldset | value |
---|---|---|
2021-08-02 11:00:00 | EnvTemperature | 7 |
2021-08-02 11:00:00 | HorizIrrad | 632 |
2021-08-02 12:00:00 | EnvTemperature | 10 |
2021-08-02 12:00:00 | HorizIrrad | 884 |
【问题讨论】:
【参考方案1】:使用函数jsonb_array_elements(jsonb)
将所有json数组元素返回为value
。
select
(value->>'time')::timestamp as "time",
(value->'fieldSet'->>'EnvTemperature')::numeric as "EnvTemperature",
(value->'fieldSet'->>'HorizIrrad')::numeric as "HorizIrrad"
from the_data
cross join jsonb_array_elements(json_col->'values')
在Db<>fiddle.中测试它
阅读JSON Functions and Operators.
【讨论】:
以上是关于如何将此 JSON 数据导入 postgresql 表?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Django 中使用 PostgreSQL 9.2 JSON 数据类型?
如何定期将大型 JSON 数据集导入 Cloud Firestore?
如何在 JSON 文件中导出对象数组,然后使用 es6 导入 [重复]