如何将此 JSON 数据导入 postgresql table?

How to import this JSON data into a postgresql table?

我有以下 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”和“时间”导入到 table 中,如下所示:

时间 环境温度 HorizIrrad
2021-08-0211:00:00 7 632
2021-08-0212:00:00 10 884

或者像这样:

时间 字段集
2021-08-0211:00:00 环境温度 7
2021-08-0211:00:00 HorizIrrad 632
2021-08-0212:00:00 环境温度 10
2021-08-0212:00:00 HorizIrrad 884

使用函数jsonb_array_elements(jsonb),returns所有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.