powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / JSON to Table?
21 сообщений из 21, страница 1 из 1
JSON to Table?
    #39335493
bot2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть список вида
Код: plsql
1.
{"f1":"v1","f2":"v2","f3":"v3","f4":"v4","f5":"v5","f6":"v6"}



Может ли кто подсказать как привести его к таблице вида:
+--+--+
| f1|v1|
+--+--+
| f2|v2|
+--+--+
| f3|v3|
+--+--+
| f4|v4|
+--+--+
| f5|v5|
+--+--+
| f6|v6|
+--+--+

Имеются: Oracle 11.2, APEX 5, PLJSON 1.0.4
...
Рейтинг: 0 / 0
JSON to Table?
    #39335637
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
JSON to Table?
    #39335713
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
SQL> select  banner
  2    from  v$version
  3  /

BANNER
--------------------------------------------------------------------------------
Oracle Database 11g Enterprise Edition Release 11.2.0.3.0 - 64bit Production
PL/SQL Release 11.2.0.3.0 - Production
CORE    11.2.0.3.0      Production
TNS for 64-bit Windows: Version 11.2.0.3.0 - Production
NLSRTL Version 11.2.0.3.0 - Production

SQL> declare
  2      v_json     json := json('{"f1":"v1","f2":"v2","f3":"v3","f4":"v4","f5":"v5","f6":"v6"}');
  3      v_key_list json_list;
  4  begin
  5      v_key_list := v_json.get_keys;
  6      for v_i in 1..v_json.count loop
  7        dbms_output.put_line('KEY = ' || v_key_list.get(v_i).get_string() || ' ' || 'VALUE = ' || v_json.get(v_i).get_string());
  8      end loop;
  9  end;
 10  /
KEY = f1 VALUE = v1
KEY = f2 VALUE = v2
KEY = f3 VALUE = v3
KEY = f4 VALUE = v4
KEY = f5 VALUE = v5
KEY = f6 VALUE = v6

PL/SQL procedure successfully completed.

SQL> 



Далье надеюcь сам сможeшь.

SY.
...
Рейтинг: 0 / 0
JSON to Table?
    #39344066
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня возникла похожая задачка, но json чуть по-другому выглядит.

Код: plaintext
{"1":"v1","2":"v2","3":"v3","4":"v4","5":"v5","6":"v6"}

так вот. на нем apex_json.to_xmltype падает с ошибкой, ибо ему не по-душе, что атрибуты называются цифрами.

Как без xmltype на oracle 12 решить это я пока не догоняю.

Код: plaintext
1.
2.
3.
4.
5.
6.
ORA-31011: XML parsing failed
ORA-19213: error occurred in XML processing at lines 2
LPX-00231: invalid character 49 ('1') found in a Name or Nmtoken
ORA-06512: at "SYS.XMLTYPE", line 272
ORA-06512: at "APEX_050000.WWV_FLOW_JSON", line 1079
ORA-06512: at line 4
...
Рейтинг: 0 / 0
JSON to Table?
    #39344081
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
более того, он падает если атрибуты начинаются с цифры, а потом идут буквы.
...
Рейтинг: 0 / 0
JSON to Table?
    #39344116
K790
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shtock,

а мне кажется oracle все правильно делает, что вываливает в ошибку.

как пример, странно, не правда ли?
Код: plsql
1.
2.
3.
select 'x' as 1f from dual;

create table 1tab as select 1 from dual;
...
Рейтинг: 0 / 0
JSON to Table?
    #39344145
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K790Shtock,

а мне кажется oracle все правильно делает, что вываливает в ошибку.

как пример, странно, не правда ли?
Код: plsql
1.
2.
3.
select 'x' as 1f from dual;

create table 1tab as select 1 from dual;

Логика в ошибке определенная просматривается, но твоя аргументация лишь от незнания деталей.
Код: plsql
1.
create table "1tab" as select 1 "1" from dual;
...
Рейтинг: 0 / 0
JSON to Table?
    #39344151
K790
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshop,

точно, забыл про такую возможность :)
...
Рейтинг: 0 / 0
JSON to Table?
    #39344173
Фотография -2-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
K790
Код: plsql
1.
select 'x' as 1f from dual;

1f провокационный пример.
Код: plsql
1.
2.
select 1f
from (select 1 "1f" from dual);
...
Рейтинг: 0 / 0
JSON to Table?
    #39344196
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>а мне кажется oracle все правильно делает, что вываливает в ошибку.

Мне кажется, ты путаешь парсинг и объекты бд
...
Рейтинг: 0 / 0
JSON to Table?
    #39344605
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Походу баг парсера apex_json. Как обойти - неясно, ибо в других языках парсится нормально.
...
Рейтинг: 0 / 0
JSON to Table?
    #39345074
Фотография dbms_photoshop
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShtockПоходу баг парсера apex_json. Как обойти - неясно, ибо в других языках парсится нормально.Решение влоб - добавить одну букву если начинается с цифры. Потом убрать.

Код: plaintext
regexp_replace(..., '"(\d.*?)"', '"x\1"')
...
Рейтинг: 0 / 0
JSON to Table?
    #39345320
Фотография andrey_anonymous
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dbms_photoshopShtockПоходу баг парсера apex_json. Как обойти - неясно, ибо в других языках парсится нормально.Решение влоб - добавить одну букву если начинается с цифры.
В лоб - это добавить букву всем идентификаторам... заодно и убирать проще :)
...
Рейтинг: 0 / 0
JSON to Table?
    #39345570
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
всё бы хорошо, тока json по 1 - 2 мб это не редкость, а значит придётся юзать plsql со всем вытекающим....
...
Рейтинг: 0 / 0
JSON to Table?
    #39345587
K790
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shtock,

а что за второй параметр в APEX_JSON.TO_XMLTYPE: p_strict IN BOOLEAN DEFAULT TRUE? может с ним попробовать?
...
Рейтинг: 0 / 0
JSON to Table?
    #39346050
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
попробовал поставив в false. Не помогает, к сожалению...
...
Рейтинг: 0 / 0
JSON to Table?
    #39346052
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
declare
 lVar xmltype;
begin
 lVar := apex_json.to_xmltype('{"1":"v1","2":"v2","3":"v3","4":"v4","5":"v5","6":"v6"}', false);
 dbms_output.put_line(lVar.getclobval);
end;
...
Рейтинг: 0 / 0
JSON to Table?
    #39346053
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
так падает

а так нет
Код: plsql
1.
2.
3.
4.
5.
6.
declare
 lVar xmltype;
begin
 lVar := apex_json.to_xmltype('{"n1":"v1","n2":"v2","n3":"v3","n4":"v4","n5":"v5","n6":"v6"}', false);
 dbms_output.put_line(lVar.getclobval);
end;
...
Рейтинг: 0 / 0
JSON to Table?
    #39346054
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
краткий вывод - в oracle глючнее функционала чем по json нет. Может в 12.2 будет лучше, но в целом пока всё очень грустно...
...
Рейтинг: 0 / 0
JSON to Table?
    #39346062
Фотография Elic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shtock
Код: plsql
1.
apex_json

ShtockМожет в 12.2 будет лучшеТы уверен, что туда бочки катишь?
...
Рейтинг: 0 / 0
JSON to Table?
    #39346083
Фотография Shtock
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну скажем так как это сделать через json_table я пока не представляю, посему выкручиваюсь как могу. А насчёт глючности джейсона спорить бессмысленно - 600 ошибки ловятся на ура, про индексы по json полям вообще отдельная тема когда внезапно запросы по ним перестают работать, а минут через 5 внезапно начинают. Список может быть бесконечен.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / JSON to Table?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]