Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / JSON to Table? / 21 сообщений из 21, страница 1 из 1
27.10.2016, 15:25
    #39335493
bot2
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON to Table?
Есть список вида
Код: 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
27.10.2016, 16:57
    #39335637
andrey_anonymous
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON to Table?
...
Рейтинг: 0 / 0
27.10.2016, 18:30
    #39335713
SY
SY
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON to Table?
Код: 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
09.11.2016, 11:28
    #39344066
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON to Table?
У меня возникла похожая задачка, но 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
09.11.2016, 11:42
    #39344081
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON to Table?
более того, он падает если атрибуты начинаются с цифры, а потом идут буквы.
...
Рейтинг: 0 / 0
09.11.2016, 12:21
    #39344116
K790
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON to Table?
Shtock,

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

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

create table 1tab as select 1 from dual;
...
Рейтинг: 0 / 0
09.11.2016, 12:57
    #39344145
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON to Table?
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
09.11.2016, 13:01
    #39344151
K790
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON to Table?
dbms_photoshop,

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

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

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

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

а что за второй параметр в APEX_JSON.TO_XMLTYPE: p_strict IN BOOLEAN DEFAULT TRUE? может с ним попробовать?
...
Рейтинг: 0 / 0
12.11.2016, 11:24
    #39346050
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON to Table?
попробовал поставив в false. Не помогает, к сожалению...
...
Рейтинг: 0 / 0
12.11.2016, 11:24
    #39346052
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON to Table?
Код: 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
12.11.2016, 11:25
    #39346053
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON to Table?
так падает

а так нет
Код: 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
12.11.2016, 11:26
    #39346054
Shtock
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON to Table?
краткий вывод - в oracle глючнее функционала чем по json нет. Может в 12.2 будет лучше, но в целом пока всё очень грустно...
...
Рейтинг: 0 / 0
12.11.2016, 11:47
    #39346062
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
JSON to Table?
Shtock
Код: plsql
1.
apex_json

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


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