|
|
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2008, 11:56 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
например так: Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2008, 12:20 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Спасибо всем!!! отлично работают оба варианта!! :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.05.2008, 12:29 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Подскажите, плиз, что не так делаю. Надо вывести в одну строчку все значения показателей. Выводит пустые значения: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2008, 18:20 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
help_xml wrote: > Подскажите, плиз, что не так делаю. Условие "KPI[name" везде заменить на "KPI[@name". Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2008, 18:23 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Denis Popov help_xml wrote: > Подскажите, плиз, что не так делаю. Условие "KPI[name" везде заменить на "KPI[@name". Posted via ActualForum NNTP Server 1.4 Спасибо!, работает :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.07.2008, 18:25 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
получают от soap ответ от сбербанка пока стоит задача научится его екстрактить на части, но этот подлец тут же ругается, на первом же элементе - extract('soap:Envelope'). оракулORA-31011: XML parsing failed ORA-19202: Error occurred in XML processing LPX-00601: Invalid token in: 'soap:Envelope' ORA-06512: at "SYS.XMLTYPE", line 111 без extract преобразование к xmltype проходит. Что ему еще от меня нужно ??? сокращенный xml Код: plaintext 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. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2008, 16:39 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
barrabasЧто ему еще от меня нужно ???namespace Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2008, 16:50 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Elic, супер, спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2008, 17:34 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Тут Timm давал ссылку на SQL/XML how-to для 10g. Погонял те же тесты на 11g - SQL/XML стал в несколько раз быстрее и обгоняет DBMS_GEN. В 11g теперь стоит Java 1.5 с JIT компилятором. Неужели настолько лучше стало, или просто SQL/XML на С переписали? Завтра, если не забуду, надо трейсы снять. Если это Java так ускорилась, то есть повод и другие пакеты потестировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 01:38 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
как достать значение атрибута OnDate из примера я у него другой нейспейс пробую так Код: plaintext 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 11:17 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
для простоты восприятия Код: plaintext 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 12:15 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 13:30 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Zloxa Код: plaintext 1. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2008, 13:44 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Пытаюсь распарсить XML документ: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Oracle ругается: ORA-31011: сбой разбора XML ORA-19202: Возникла ошибка при обработке XML LPX-00234: namespace prefix "xsi" is not declared Error at line 1 Как правильно передать в это выражение нужный namespace? extract(value(t), 'ListNar/nz/text()', 'xmlns="http://tempuri.org"').getStringVal() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 05:51 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
BinaryBoyLPX-00234: namespace prefix "xsi" is not declared Как правильно передать в это выражение нужный namespace? Всё правильно. Но На 9-ке не работает, потому что где-то теряются namespace-ы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 10:47 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Elicгде-то ТУТ Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 11:02 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
ElicBinaryBoyLPX-00234: namespace prefix "xsi" is not declared Как правильно передать в это выражение нужный namespace? Всё правильно. Но На 9-ке не работает, потому что где-то теряются namespace-ы У меня 9.2.0.7 Вообще никак эту ситуацию не обойти? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 11:05 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Elic - спасибо! Zloxa - мегареспект! Действительно, не очевидня фича! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.01.2009, 13:31 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Всем привет! Заранее извиняюсь что вклиниваюсь со своими проблемами... Но думаю что не стоит отдельную тему заводить. Имеется следующая задача: Принять с клиента XML следующей структуры (схема может быть изменена, если это поможет делу, т.к. генерация XML под нашим контролем). Грубо говоря, это некоторые "измерения" и соответствующие каждому измерению "значения параметров". Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. И соответсвенно раскидать по 2 табличкам master-detail Код: plaintext 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. Имеются достаточно жёсткие требования по скорости работы, и объёму передаваемой информации. Передаваться будет ориентировочно 15 подобных XML пакетов в минуту (хотелось бы чтобы система работала в режиме 24/7), каждый пакет - это 60 измерений (т.е. на каждую секунду) и вплоть до 200 параметров на каждое измерение (итого 1 пакет это до 12000 новых записей, но "типично" надеюсь будет раза в 2-3 меньше). Допускаются повторные передачи (для простоты считаем что без удаления ранее принятых данных - т.е. используя MERGE). Сейчас нарисована следующая ХП (по сути черновик, хотя и выполняет свои задачи) для приёма пакетов: Код: plaintext 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. 48. 49. 50. 51. К сожалению, по скорости работы это явно не лучшее решение. Пока пакеты небольшие, это ещё приемлемо, но вот обработка 100-200Кб-ного пакета занимает уже до 20 секунд :( Хочется совета, как быть... Может быть переписать парсинг средствами dbms_xmldom? Даст ли это реальный выигрыш по скорости обработки? Или может быть можно как-то оптимизировать приведенный код? Избежать внутреннего цикла (я так понимаю, он для каждого "куска" повторно выполняет парсинг и строит новый DOM) - всё-же 60 "лишних" обращений на пакет... Но увы я не представляю как можно от этого уйти :( Написать процедуру на Java (используя SAX) заманчиво, но скорее всего неосуществимо :( Целевой сервер будет не ниже 10-го, но лучше всего, если решение будет совместимо с 9-м, т.к. девелоперский сервер будет 9i (9.2.0.8). Клиентом - пока будет VB6 прога (через старый добрый ADO - спасибо форуму, нашёл как побороть лимит передачи параметра в 32К ;) ), в перспективе может быть и C# (ADO.NET) и даже какое-то сугубо оракловское решение (HTTP). WBR, Igor ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2009, 18:26 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Igor Korolyov wrote at 27.02.2009 18:26: > Имеется следующая задача: Принять с клиента XML следующей структуры > (схема может быть изменена, если это поможет делу, т.к. генерация XML > под нашим контролем). .... > Имеются достаточно жёсткие требования по скорости работы, и объёму .... > Целевой сервер будет не ниже 10-го, но лучше всего, если решение будет > совместимо с 9-м, т.к. девелоперский сервер будет 9i (9.2.0.8). Может сделать одну промежуточную таблицу и модифицировать XML так, чтобы он мог обработаться пакетами DBMS_XMLSAVE и DBMS_XMLSTORE? Второй появился в Oracle 10g и по-моему через них будет быстрее, чем через XmlType. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2009, 19:24 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Тут есть пара моментов 1) Оно до сих пор и работало через 2 промежуточные "рабочие" таблицы и пару процедур - там помимо погрузки ещё и вопросы обработки решались - минимаксы считались (по всему массиву конечно же считать минимакс это убийственно, вот оно и считалось по погружаемой порции, и сливалось с ранее запомненными данными), потом ещё и "интервалы непрерывности" считались (типа чтоб "дырки" по времени видеть - когда нет "измерений"). И всё это хозяйство, даже при не пиковой нагрузке генерировало до 45Мб редо-лога в минуту (чёрт его знает, там и сложность этой обработки, и кривость написанных процедур - всё понемногу влияло). Т.к. инстансы работали в режиме архивирования логов, то очень быстро пришлось такую систему вырубить :) 2) Я думал насчёт представления с инстед-оф триггером, чтоб он распихивал поступающие данные по 2-м таблицам. Это по идее сходно со схемой "плоской" рабочей таблицы... Но, как я сейчас себе представляю логику работы такого триггера, то получается что для каждой записи (идущей в итоге в детэйл-таблицу) придётся делать поиск в мастер-таблице по альтернативному ключу (w+t) - а это боюсь будет очень неэффективно. Сейчас такой поиск проводится только 1 раз для всех "значений параметров" - которых, как я говорил, будет до 200 на "измерение"... DBMS_XMLSAVE и тем паче DBMS_XMLSTORE конечно было бы заманчиво прикрутить (даже схему XML-я бы под них поменяли, чтобы не парится с трансформациями или "тонкой" настройкой пакета), но, как я понимаю, они оба не в состоянии работать с иерархиями :( А в приведенной процедуре ничего нельзя подправить? Чтобы избежать для второго цикла запроса - т.е. как-то по иному rec_m.params прокручивать... Или тут не происходит повторного разбора XML-я? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.02.2009, 16:58 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Igor KorolyovА в приведенной процедуре ничего нельзя подправить? Чтобы избежать для второго цикла запроса - т.е. как-то по иному rec_m.params прокручивать... Или тут не происходит повторного разбора XML-я? Может тогда разбирать XML единожды до "плоского" вида и вставлять данные в обе таблицы, вроде такого: Код: plaintext 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. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2009, 17:51 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Попробуйте разбор через xmldom, может добавит скорости: Код: plaintext 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. 48. 49. 50. 51. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.03.2009, 17:55 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
В общем, на текущий момент получилось следующее (на домашнем Oracle 10g XE при подаче тестового XML-я из CLOB поля таблички): -Моя изначальная процедура исполняется около 20 секунд. -Вариант с плоской таблицей, по наброску Дениса - 1 минуту 5 секунд. -Вариант с DBMS_XMLDOM (приведенный ниже) - около 3 секунд. При этом если закомментировать собственно INSERT и MERGE (т.е. по сути оставить только парсинг) - то исполняется примерно за 600 мсек, что на данный момент меня более чем устраивает. -Если будет время, попробую вариант с DBMS_XMLSTORE + view "распихивающий" данные по 2-м таблицам. Но боюсь что на реальной базе это будет неприемлемо медленно из-за огромного количества вспомогательных запросов на "наличие записи", даже учитывая что каждый такой запрос идёт по уникальному индексу... Всё-же 60 запросов куда как приятнее нежели 12000 :) В общем промежуточный лидер забега - DBMS_XMLDOM :) Хотя я думаю что SAX парсер на Java был бы не медленнее (увы, нет возможности проверить это). И конечно небольшое разочарование - на нашем кривом девелоперском сервере (давно уже надо всё переставлять, а то "недопатченный" 9.2.0.7 с некогда хранящимися в SYSTEM пользовательскими данными, переживший к тому-же пару серьёзных сбоев ОС - это та ещё "радость") вариант с DBMS_XMLDOM не работает вовсе - пресловутая ORA-06502: PL/SQL: numeric or value error: raw variable length too long Код: plaintext 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. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. Попутно возник ещё один вопрос - процедура за запуск (на чистой базе) генерирует 6.5Мб редо лога, если сразу после этого выполнить (в блоке BEGIN ... END) Два INSERT ... SELECT эффективно "удваивающих" данные (ну, конечно, со смещениями дабы не нарушать уникальных констрейнов) - то эта операция генерирует всего лишь 1.5 Мб лога - что может быть причиной подобного отличия? Порядок следования операций вставки? "чередующийся" в одном случае и "сплошной" в другом? Тот факт что первая операция исполняется на пустых таблицах а вторая на уже заполненных? Или какие-то особенности вычисления статистики TOAD-ом, о которых я не знаю? WBR, Igor ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2009, 19:39 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=35761361&tid=1886509]: |
0ms |
get settings: |
7ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
161ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
| others: | 279ms |
| total: | 542ms |

| 0 / 0 |
