Динамически извлекать JSON в базу данных ORacle 12 c версию 1 - PullRequest
0 голосов
/ 16 июня 2020

Мне нужно преобразовать JSON в таблицу данных (столбцы значений ключа) в Oracle 12 c v12.1.0.2

Так, например: есть строка JSON вроде {"ID": 10, "Description": "TestJSON", "status":"New"}

Мне нужно преобразовать это в:

Column1          Column2
------------------------------------
ID                  10
Description         TestJSON
status              New

Теперь моя строка JSON может изменить количество атрибутов, и, следовательно, мне нужно сохранить динамику преобразования c.

Любая помощь будет принята с благодарностью.

Спасибо!

1 Ответ

0 голосов
/ 16 июня 2020

Вы можете реализовать это с помощью запроса иерархии и REGEXP следующим образом:

SQL> with dataa(d) as
  2  (select '["ID": 10, "Description": "TestJSON", "status":"New"]' from dual)
  3  --
  4  -- Your query starts from here
  5  SELECT TRIM('"' FROM REGEXP_SUBSTR(STR,'[^:]+',1,1)) AS COL1,
  6         TRIM('"' FROM TRIM(REGEXP_SUBSTR(STR,'[^:]+',1,2))) AS COL2
  7    FROM
  8  (SELECT t.d, trim(REGEXP_SUBSTR(trim(']' from trim('[' from T.D)), '[^,]+', 1, COLUMN_VALUE)) as str
  9    FROM DATAA T
 10   CROSS JOIN TABLE ( CAST(MULTISET(
 11  SELECT LEVEL FROM DUAL CONNECT BY
 12  LEVEL <= LENGTH(REGEXP_REPLACE(T.D, '[^,]+')) + 1
 13  ) AS SYS.ODCINUMBERLIST) ) LEVELS);

COL1            COL2
--------------- --------------------
ID              10
Description     TestJSON
status          New

SQL>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...