Можете да използвате json_table()
за да превърнете JSON стойността в релационно представяне. Това от своя страна може да се използва в оператор MERGE.
напр. следната заявка:
изберете j.*from itv_dev_logs cross join json_table(log_clob, '$.data.routedStops[*]' колони stop_id integer path '$.stopId', zone_ltf integer path '$.zoneLTF', info_stop_nr integer path '$.routingInfo.stop', info_route_ref varchar(20) път '$.routingInfo.routeRef', info_eta varchar(20) път '$.routingInfo.eta', info_eta_dt времеви път път '$.routingInfo.etaDateTime', info_stop_time номер път '$.routingInfo.stopTime' ) jкъдето log_id =1435334;
Връща нещо подобно:
<предварителен код>STOP_ID | ZONE_LTF | INFO_STOP_NR | INFO_ROUTE_REF | INFO_ETA | INFO_ETA_DT | INFO_STOP_TIME | INFO_DIST_PREV_STOP | INFO_BREAK_TIME | INFO_BREAK_DURATION--------------+----------+--------------+-------- --------+----------+---------------+---- ------------+--------------------+-------------- --+--------------------1554383571432 | 1 | 1 | R119 | 11:01 | 2019-04-16 11:01:00.000 | 0,08 | 0,27 | 00:00 | 00:00 1554383571515 | 1 | 2 | R119 | 11:07 | 2019-04-16 11:07:00.000 | 0,08 | 0,34 | 00:00 | 00:00 1554383571601 | 1 | 3 | R119 | 11:13 | 2019-04-16 11:13:00.000 | 0,08 | 0 | 00:00 | 00:00 1554383571671 | 1 | 4 | R119 | 11:19 | 2019-04-16 11:19:00.000 | 0,08 | 0 | 00:00 | 00:00 1554383571739 | 1 | 5 | R119 | 11:25 | 2019-04-16 11:25:00.000 | 0,08 | 0 | 00:00 | 00:00Това може да се използва като източник на оператор MERGE за актуализиране на вашата целева таблица:
сливане във your_target_table tgusing ( изберете j.* от itv_dev_logs cross join json_table(log_clob, '$.data.routedStops[*]' колони stop_id integer path '$.stopId', zone_ltf integer path '$.zoneLTF ', info_stop_nr integer path '$.routingInfo.stop', info_route_ref varchar(20) path '$.routingInfo.routeRef', info_eta varchar(20) path '$.routingInfo.eta', info_eta_dt timestamp path '$.routingInfo.etaDateTime ', info_stop_time номер път '$.routingInfo.stopTime' ) j където log_id =1435334) t on (t.stop_id =tg.stop_id и ... още условия за присъединяване ...)когато съвпаднат, тогава актуализирайте set stop_nr =t.info_stop_nr , eta_timestamp =t.eta_dt,
Тъй като нито сте предоставили структурата на целта, нито информацията кои JSON ключове трябва да съответстват на кои колони на таблицата, всички имена на колони са само предположения и трябва да ги замените с правилните имена.