Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Народ помогите с xmltable! / 25 сообщений из 27, страница 1 из 2
20.07.2016, 07:15:42
    #39276785
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
Пытаюсь распарсить:

Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
select *
  from xmltable('//root' passing xmltype(
                         '<root>
                            <nom>100</nom>
                            <Client_dat>02.03.2015</Client_dat> 
                              <params>
                                  <param>№16</param>
                                  <param>03.01.2015</param>
                                  <param>test</param>
                              </params>
                          </root>') 
                columns 
                     nom varchar2(255) path '//nom',
                     client_dat varchar2(255) path '//Client_dat',
                     params xmltype path '//params/param') c,
       xmltable('*' passing c.params columns param varchar2(255) path '//param') cl



Результат такой:
nom | client_dat | params
1 |100 |02.03.2015 |<XMLTYPE>
2 |100 |02.03.2015 |<XMLTYPE>
3 |100 |02.03.2015 |<XMLTYPE>

в поле params в <XMLTYPE> имеются
Код: xml
1.
<param>№16</param><param>03.01.2015</param><param>test</param>





а нужно чтобы так было:

|nom |client_dat |params
1 |100 |02.03.2015 |№16
2 |100 |02.03.2015 |03.01.2015
3 |100 |02.03.2015 |test
...
Рейтинг: 0 / 0
20.07.2016, 07:35:57
    #39276787
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
Askat
Код: plsql
1.
       xmltable('*' passing c.params columns param varchar2(255) path '//param') cl

Код: plsql
1.
       xmltable('/param' passing c.params columns param varchar2(255) path '.') cl
...
Рейтинг: 0 / 0
20.07.2016, 07:42:11
    #39276788
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
ElicAskat
Код: plsql
1.
       xmltable('*' passing c.params columns param varchar2(255) path '//param') cl

Код: plsql
1.
       xmltable('/param' passing c.params columns param varchar2(255) path '.') cl




Вот тебе большое спасибо! помог!
...
Рейтинг: 0 / 0
20.07.2016, 11:44:27
    #39276945
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
Люди добрые, возник следующий вопрос. Как полученный результат вставить в таблицу в одну строку типа?:

nom |client_dat |field1 |field2 |field3
100 |02.03.2015 |№16 |03.01.2015 |test
...
Рейтинг: 0 / 0
20.07.2016, 11:50:43
    #39276952
Fogel
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
AskatЛюди добрые, возник следующий вопрос. Как полученный результат вставить в таблицу в одну строку типа?:

nom |client_dat |field1 |field2 |field3
100 |02.03.2015 |№16 |03.01.2015 |test

вcю строку в поле одного столбца - listagg
каждое значение в своё поле - pivot
...
Рейтинг: 0 / 0
20.07.2016, 11:54:43
    #39276960
-2-
-2-
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
taksAв одну строкуне выеживаться с получением из xml нескольких строк, да еще через второй xmltable, который, кстати, в приведенном виде может стать неожиданностью, если params не заполнено.
...
Рейтинг: 0 / 0
20.07.2016, 11:57:49
    #39276964
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
FogelAskatЛюди добрые, возник следующий вопрос. Как полученный результат вставить в таблицу в одну строку типа?:

nom |client_dat |field1 |field2 |field3
100 |02.03.2015 |№16 |03.01.2015 |test

вcю строку в поле одного столбца - listagg
каждое значение в своё поле - pivot


не в один столбец, а по столбцам, всего 5 столбец т.е. в столбец nom значение 100 , в столбец client_dat значение 02.03.2015 , в столбец field1 значение №16 , в столбец field2 значение 03.01.2015 , в столбец field3 значение test
...
Рейтинг: 0 / 0
20.07.2016, 12:06:45
    #39276974
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
Askatв столбец field1 значение №16
Код: plsql
1.
, param1 ... path '//params/param[1]'
...
Рейтинг: 0 / 0
20.07.2016, 12:14:33
    #39276981
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
ElicAskatв столбец field1 значение №16
Код: plsql
1.
, param1 ... path '//params/param[1]'



Есть, получилось, Спасибо тебе!!!
...
Рейтинг: 0 / 0
20.07.2016, 12:25:52
    #39276994
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
AskatЕсть, получилосьУчи xmlpath не методом сиюминутного тыка.
...
Рейтинг: 0 / 0
25.07.2016, 08:35:52
    #39279388
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
ElicAskatЕсть, получилосьУчи xmlpath не методом сиюминутного тыка.


Структура изменилась, как теперь распарсить?

Код: xml
1.
2.
3.
4.
5.
6.
                                  
<params>
<param column = "SCHET_IZV">123456789</param>
<param column = "PERIOD">234</param>
<param column = "RES">0</param>
</params>
...
Рейтинг: 0 / 0
25.07.2016, 08:39:21
    #39279389
taksA
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
AskatСтруктура измениласьКакой неожиданный поворот. Кто давал советы, ну просто обязаны взять решение на пожизненное сопровождение.
...
Рейтинг: 0 / 0
25.07.2016, 08:46:55
    #39279390
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
taksAAskatСтруктура измениласьКакой неожиданный поворот. Кто давал советы, ну просто обязаны взять решение на пожизненное сопровождение.

я не часто занимаюсь парсингом через pl-sql к тому же я новичок в среде оракл и вот неожиданно дали задание пропарсить, а так смог бы через делфи, ну помогите люди добрые, изучать долго времени уйдет!!!
...
Рейтинг: 0 / 0
25.07.2016, 08:47:44
    #39279392
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
AskatСтруктура изменилась, как теперь распарсить?Не i-тый параметр, а у которого такой-то атрибут равен такому-то значению.
...
Рейтинг: 0 / 0
25.07.2016, 08:49:47
    #39279395
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
Askatизучать долго времени уйдет!!!Знания лишними не бывют.
Askatа так смог бы через делфиНу да, там же XPath совсем другой
...
Рейтинг: 0 / 0
25.07.2016, 08:50:38
    #39279397
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
ElicAskatСтруктура изменилась, как теперь распарсить?Не i-тый параметр, а у которого такой-то атрибут равен такому-то значению.


было бы лучше явно определить название параметра, но у мення что-то не так, пустое значение:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
select  *

  from xmltable('pay_doc' passing xmltype(
                              '<pay_doc>
                                 [SRC XML] <nom>18545885</nom>
                                  <filial_id>4</filial_id>
                                  <rko_id>1000</rko_id>
                                  <provider_id>2119</provider_id>
                                  <lic_id>607057</lic_id>
                                  <client_dat>20.07.2016</client_dat>
                                  <summ>24781</summ>
                                  <client_komis>150</client_komis>
                                  <input_summ>24931</input_summ>
                                  <client_fio>асан л&#1241;йл&#1241; ер&#1171;азы&#1179;ызы</client_fio>
                                  <client_address>мкр курылысшы ул кокорай д 18 кв 20</client_address>
                                  <client_phone>№ 808/14-01 от 29.10.2014</client_phone>
                                  <create_user_id>2600</create_user_id>
                                  <params>
                                     <param column = "SCHET_IZV">123456789</param>
                                     <param column = "PERIOD">234</param>
                                     <param column = "RES">0</param>
                                  </params>
                              </pay_doc>'


)
columns
nom varchar2(255) path 'nom',
filial_id varchar2(255) path 'filial_id',
rko_id varchar2(255) path 'rko_id',
provider_id varchar2(255) path 'provider_id',
lic_id varchar2(255) path 'lic_id',
client_dat varchar2(255) path 'client_dat',
summ varchar2(255) path 'summ',
client_komis varchar2(255) path 'client_komis',
input_summ varchar2(255) path 'input_summ',
client_fio varchar2(255) path 'client_fio',
client_address varchar2(255) path 'client_address',
client_phone varchar2(255) path 'client_phone',
create_user_id varchar2(255) path 'create_user_id',

SCHET_IZV varchar2(255) path 'params/param[@SCHET_IZV]',
PERIOD varchar2(255) path 'params/param[@PERIOD]',
RES varchar2(255) path 'params/param[@RES]'


) с;
[/SRC]
...
Рейтинг: 0 / 0
25.07.2016, 08:53:44
    #39279398
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
[quot Askat]Elicпропущено...
Не i-тый параметр, а у которого такой-то атрибут равен такому-то значению.


было бы лучше явно определить название параметра, но у мення что-то не так, пустое значение:
Код: 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.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
select  *

  from xmltable('pay_doc' passing xmltype(
                              '<pay_doc>
                                 [SRC XML] <nom>18545885</nom>
                                  <filial_id>4</filial_id>
                                  <rko_id>1000</rko_id>
                                  <provider_id>2119</provider_id>
                                  <lic_id>607057</lic_id>
                                  <client_dat>20.07.2016</client_dat>
                                  <summ>24781</summ>
                                  <client_komis>150</client_komis>
                                  <input_summ>24931</input_summ>
                                  <client_fio>асан л&#1241;йл&#1241; ер&#1171;азы&#1179;ызы</client_fio>
                                  <client_address>мкр курылысшы ул кокорай д 18 кв 20</client_address>
                                  <client_phone>№ 808/14-01 от 29.10.2014</client_phone>
                                  <create_user_id>2600</create_user_id>
                                  <params>
                                     <param column = "SCHET_IZV">123456789</param>
                                     <param column = "PERIOD">234</param>
                                     <param column = "RES">0</param>
                                  </params>
                              </pay_doc>'


                          ) 
                columns 
                    nom             varchar2(255) path 'nom',
                    filial_id       varchar2(255) path 'filial_id',
                    rko_id          varchar2(255) path 'rko_id',
                    provider_id     varchar2(255) path 'provider_id',
                    lic_id          varchar2(255) path 'lic_id',
                    client_dat      varchar2(255) path 'client_dat',
                    summ            varchar2(255) path 'summ',
                    client_komis    varchar2(255) path 'client_komis',
                    input_summ      varchar2(255) path 'input_summ',
                    client_fio      varchar2(255) path 'client_fio',
                    client_address  varchar2(255) path 'client_address',
                    client_phone    varchar2(255) path 'client_phone',
                    create_user_id  varchar2(255) path 'create_user_id',

                    SCHET_IZV       varchar2(255) path 'params/param[@SCHET_IZV]',
                    PERIOD       varchar2(255) path 'params/param[@PERIOD]',
                    RES       varchar2(255) path 'params/param[@RES]'
                    
                    
                    ) с;





, param1 ... path '//params/param[1]' не пойдет
...
Рейтинг: 0 / 0
25.07.2016, 09:00:59
    #39279400
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
Askat
Код: plsql
1.
path 'params/param[@SCHET_IZV]'

Elicу которого такой-то атрибут равен такому-то значению
...
Рейтинг: 0 / 0
25.07.2016, 09:05:16
    #39279402
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
ElicAskat
Код: plsql
1.
path 'params/param[@SCHET_IZV]'

Elicу которого такой-то атрибут равен такому-то значению

да

в общем надо распарсить это:

Код: xml
1.
2.
3.
4.
5.
                                  <params>
                                     <param column = "SCHET_IZV">123456789</param>
                                     <param column = "PERIOD">234</param>
                                     <param column = "RES">0</param>
                                  </params>



вот такой вариант не пойдет:
Код: plsql
1.
2.
3.
                    SCHET_IZV       varchar2(255) path 'params/param[1]',
                    PERIOD       varchar2(255) path 'params/param[2]',
                    RES       varchar2(255) path 'params/param[3]'



т.к. есть система с которой будут выгружаться данные в xml заранее указанные поля и соответсвенно этот xml импортируется d другую систему
...
Рейтинг: 0 / 0
25.07.2016, 09:08:20
    #39279403
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
AskatElicпропущено...
пропущено...даЧудак, это была последняя подсказка. Дальше жевать нельзя.
...
Рейтинг: 0 / 0
25.07.2016, 09:12:52
    #39279405
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
ElicAskatпропущено...
даЧудак, это была последняя подсказка. Дальше жевать нельзя.


не работает, уже пробовал
...
Рейтинг: 0 / 0
25.07.2016, 09:15:07
    #39279406
Elic
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
Askatне работает, уже пробовалТы непроходимый добролёт. http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM
...
Рейтинг: 0 / 0
25.07.2016, 13:48:41
    #39279665
Askat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
ElicAskatне работает, уже пробовалТы непроходимый добролёт. http://www.bugtraq.ru/forum/faq/general/smart-questions.html] RTFM


Не получается, может все таки поможете?!
...
Рейтинг: 0 / 0
25.07.2016, 14:10:49
    #39279694
dbms_photoshop
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
AskatНе получается, может все таки поможете?!В xmltable додумаешься куда вставить?
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
with t as
(select 
'<params>
   <param column = "SCHET_IZV">123456789</param>
   <param column = "PERIOD">234</param>
   <param column = "RES">0</param>
</params>' str
from dual)
select
extract(x, '/params/param[@column="PERIOD"]/text()') value_by_attr,
extract(x, '/params/param[text()="123456789"]/@column') attr_by_value
from (select xmltype(str) x from t);


Код: plaintext
1.
2.
3.
VALUE_BY_ATTR ATTR_BY_VALUE
------------- -------------
234           SCHET_IZV    
1 row selected.
...
Рейтинг: 0 / 0
25.07.2016, 15:56:08
    #39279781
Радеющий
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Народ помогите с xmltable!
Elic, а потом dbms_photoshop,
СПАСИБО ВАМ!
я (не ТС) по результатам разбора этой темы много узнал, пытаясь решить за ТС задачу, и сильно повысил скиллы по разбору xml любой вложенности с любым набором атрибутов
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Народ помогите с xmltable! / 25 сообщений из 27, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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