【发布时间】:2019-12-11 13:05:19
【问题描述】:
我有来自 MongoDB 的航班预订的 json 数据。此数据插入到 PostgreSQL 表中,数据类型为 json。行程信息具有以下结构。
[
{
"segments": {
"1": {
"airline": "G8",
"flight_number": "761",
"arrival-date": "2018-11-02T12:45:00",
"arrival_airport": "CCU",
"departure_date": "2018-11-02T11:35:00",
"departure_airport": "BBI",
"operating_airline": "G8",
"stops": 0,
"index": 1,
"duration": 4200
}
}
},
{
"segments": {
"2": {
"airline": "6E",
"flight_number": "775",
"arrival-date": "2018-11-03T00:30:00",
"arrival_airport": "BBI",
"departure_date": "2018-11-02T23:20:00",
"departure_airport": "CCU",
"operating_airline": "6E",
"stops": 0,
"index": 2,
"duration": 4200
}
}
}
]
段数未知。如何将其拆分为多个记录,以便每个段都成为记录?
json_array_elements 是我已经在使用的函数,如果我使用json_array_elements(data->'flights')->'segments',我会得到这样的输出
{
"1": {
"airline": "AI",
"flight_number": "20",
"arrival_airport": "CCU",
"arrival-date": "2018-10-17T16:40:00",
"departure_date": "2018-10-17T14:25:00",
"departure_airport": "DEL",
"operating_airline": "AI",
"stops": 0,
"index": 1,
"duration": 8100
},
"2": {
"airline": "AI",
"flight_number": "230",
"arrival_airport": "DAC",
"arrival-date": "2018-10-17T20:25:00",
"departure_date": "2018-10-17T19:00:00",
"departure_airport": "CCU",
"operating_airline": "AI",
"stops": 0,
"index": 2,
"duration": 3300
}
}
如何将其转换为单独的记录?我想执行这样的插入 -
insert into stage_itinerary (segment_id,airline,flight_number,arrival_aiport...) select (....)
【问题讨论】:
标签: sql json postgresql