30 lines
645 B
MySQL
30 lines
645 B
MySQL
|
WITH
|
||
|
mod AS (
|
||
|
SELECT
|
||
|
srce
|
||
|
,jsonb_pretty(defn) orig
|
||
|
,(defn - 'schemas')||
|
||
|
--rebuild the schemas key value from below
|
||
|
jsonb_build_object(
|
||
|
'schemas'
|
||
|
--aggregate all the new key values for a single soure
|
||
|
,jsonb_agg(
|
||
|
--combine a new key 'name' with the columns for that name
|
||
|
jsonb_build_object('name',k)||jsonb_build_object('columns',v)
|
||
|
)
|
||
|
) rebuild
|
||
|
FROM
|
||
|
tps.srce
|
||
|
LEFT JOIN LATERAL jsonb_each(defn->'schemas') WITH ORDINALITY je(k,v, rn) ON TRUE
|
||
|
GROUP BY
|
||
|
srce
|
||
|
,defn
|
||
|
)
|
||
|
UPDATE
|
||
|
tps.srce s
|
||
|
SET
|
||
|
defn = rebuild
|
||
|
FROM
|
||
|
mod
|
||
|
WHERE
|
||
|
mod.srce = s.srce
|