|
|
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
У меня везде юникод, я упоминал: Код: plaintext 1. 2. 3. 4. 5. 6. 7. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Заметь: был Cp1251, стал WINDOWS-1251. Причем чтобы я ни пробовал вместо Cp1251: windows-1257, koi8-r, у меня вечно идет WINDOWS-1251. После чего изменил NLS_LANG на RU8PC866, переконнектился: и теперь всегда стал возвращаться CP866. То есть, на мой взгляд, получается следующее: updateXML строит новый документ с кодировкой клиента и наполняет его данными. В случае отсутствия клиента (как, например, работа через Java Thin-драйвер) берется кодировка БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2005, 15:30 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Приветствую. У меня вопрос, очень бы хотелось бы получить ответ. Я с Ораклом работаю недавно (больше программер). Собственно проблема. Мне нужно распарсить 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. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. Получаю результат. Проблема в том, что я НЕМОГУ НАЙТИ решение КАК мне разложить результаты в реляционные таблицы. Я не знаю заранее какому тэгу соответствует какое поле и его тип. Я сделал XMLSchema документ с нотацией Oracle (насколько я смог разобраться с ней) в надежде что это поможет решить данную проблему. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. Данная схема IMHO смогла бы мне помочь, но опять же как ее увязать с парсером и раскладкой в таблицы, к сожалению я не знаю. Был бы БЕЗМЕРНО ПРИЗНАТЕЛЕН за помощь с решением данной проблемы. Я просто в одиночку разруливаю эту задачу.. По системе Oracle 10.1.0 icq:168815113 Сорри если ламерские вопросы.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 16:08 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
h00fПолучаю результат. Проблема в том, что я НЕМОГУ НАЙТИ решение КАК мне разложить результаты в реляционные таблицы. Я не знаю заранее какому тэгу соответствует какое поле и его тип. Я сделал XMLSchema документ с нотацией Oracle (насколько я смог разобраться с ней) в надежде что это поможет решить данную проблему. А чем же в конечном счете определяется, что куда должно попасть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 18:18 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Я посчитал, что использование XMLSchema + нотации Oracle позволят сделать некий универсальный механизм по загрузке. Я просто не понимаю, как еще можно прописать куда должно записываться содержимое тэга, как реализовать хранение контейнера, при условии что типов сообщений порядка 36! Проблема в том, что часть проекта связанная с парсингом и накоплением дожна быть максимально универсальной т.к. (12 типов сообщений по почте, 24 типа по SOAP планируется + куча алгоритмов заимодействия и последующая реализация WSA). Я поднял XMLSchema для валидации XML сообщений, насколько смог разобрал нотации Oracle в этой части в надежде, что используя XMLSchema (XSDL) и XMLType с XML документами смогу нормально разложить в базу. Но столкнулся с тем что я НЕ ПОНИМАЮ КАК пользовать парсер с XMLSchema + XML. PL/SQL учу но опыта мало, Java не знаю, да Oracle Application Server не стоит ишо. Наверное звучит глупо и много всего, но блин нада делать а у мя бошка кругом от всего в особенности этого парсинга с загрузкой в таблицы.. Сотни вопросов.. Сорри понесло .. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 19:11 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Я вот тоже думал, что есть нечто навороченное, наподобе пары пакетов DBMS_XMLGEN -> DBMS_XMLSAVE (в 10-ке добавили DBMS_XMLSTORE, реализованный чисто на C, что обещает быть быстрее DBMS_XMLSAVE c Java): http://download-uk.oracle.com/docs/cd/B19306_01/appdev.102/b14259/xdb_dbmstore.htm#sthref1413 It takes a canonical XML mapping similar to that produced by package DBMS_XMLGEN; converts it to object-relational constructs; and inserts, updates or deletes the value from relational tables. Т.е. есть некий "канонический" XML, который всегда можно запихать в таблицу не гадая о том, какие в XML и таблице поля, закладываясь на то, что они совпадают. Получается одна процедура на заливку всех таблиц из xml. Как следует выкручиваться, если XML не "каконический" - вопрос, который бы хотелось прояснить. Пока все варианты сводятся к тому, что для обработкий каждой таблицы пишется свой код, либо делается опять же свой разборщик приходящего XML. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2005, 19:36 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Есть интересный пример по мапингу XML.. одна проблема пример загрузки XML приведен на Java на Pl/sql нетути .. к сожалению. . Oracle Database 10g XML & SQL: Design, Build & Manage XML Applications in Java, C, C++ & PL/SQL Object Views If an XML document is not in the canonical format, you can create object views or XMLType views, to allow XSU to map XML documents to database tables. In the following contact.xml XML document, the contact information is stored as follows: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Oracle Database 10g XML & SQL: Design, Build & Manage XML Applications in Java, C, C++ & PL/SQL The database schema is defined as follows: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. Oracle Database 10g XML & SQL: Design, Build & Manage XML Applications in Java, C, C++ & PL/SQL Using the canonical mapping, the XML document cannot directly map to the table columns as the document contains multiple levels; thus, to insert this XML document, you need to create the following object view: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. Oracle Database 10g XML & SQL: Design, Build & Manage XML Applications in Java, C, C++ & PL/SQL Then, you can run a similar command to load the XML file into CUSTOMER_VIEW: Код: plaintext 1. 2. Я как довольно слабый в части pl/sql не могу понять можно ли с помощью данного решения решить проблему хранения XML сообщений смешанной структуры (вертикальная+горизонтальная) с хорошей степенью вложенности контейнеров.. И еще как посредством pl/sql сделать мапинг XML таки в эту конструкцию... Извиняюсь на назойливость.. Но проект горит и уже сзати попахивает паленным.. Сорри ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2005, 09:27 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Появился ещё один вопрос по разборке XML. Вопрос такой. Можно ли каким-то образом написать, приведённый ниже, запрос без использования union. Нужно учитывать, что в XML документе может отсутствовать как первая часть <PROCEDURE name="DATA_1"> так и вторая <PROCEDURE name="DATA_2">. В обычном запросе это бы решилось с помощью (+). Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.12.2005, 17:33 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Если может отсутствовать как первая, так и вторая части, то (+)-ом ИМХО не отделаешься, это уже напоминает FULL OUTER JOIN. Раз их может не быть - вставь их самостоятельно, чтобы были наверняка: Код: 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.12.2005, 18:05 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Спасибо, попробую! В случае с union почему-то вылетает ошибка ORA-22905: cannot access rows from a non-nested table item Есть идеи, почему? Смоделировать такую ситуацию для тестового примера пока не получается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 11:07 |
|
||
|
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. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. Такое вызывает ORA-22905 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 11:35 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Ошибка появляется независимо от количества параметров. Инетресно, что в SQL*Plus такой запрос работает, а внутри процедуры - нет! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 11:44 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
В предыдущих примервх был RESPON C E, теперь стал RESPOR S E - так и должно быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 14:21 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
С этим всё в порядке, описка просто ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 14:43 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Ну по-скольку 9-ый Оракл что-то бастует и не хочет работать с XMLType и Union, ваш, Денис, вариант нахожу переспективным. Но как создать селект без union, если в запрос добавляется параметр order_by (числа 11 и 22 - могут быть любыми) Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 16:09 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Во-первых, поясни, чем не нравится вышеприведенный вариант? Во-вторых, почему UNION, а не UNION ALL, раз запросы наверняка разнятся? При использовании последнего ИМХО можно заложиться, что UNION ALL порядок записей не меняет. И, напоследок, что мешает использовать CASE в ORDER BY? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 16:20 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
По поводу union all согласен. Почему нельзя case в order by: В XML от процедуры DATA_1 есть строки с определёнными значениями параметров param_2: - тоесть если param_2 принадлежит какому-то множеству (в примере числу 11), такие строки выводить первыми. - другие строки выводить третими по счёту В XML от процедуры DATA_2 есть строки с определёнными значениями параметров param_2 (но эти значения НЕ ТАКИЕ как в первой процедуре): Выводим соответственно вторыми и четвёртыми по счёту. Чтобы в итоге получилось: данные_процедуры_1 данные_процедуры_2 данные_процедуры_1 данные_процедуры_2 Этот порядок очень важен. XML писал не я, не могу на него повлиять в данном случае. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 16:30 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Видимо нужна функция function get_ortder_by(source,param2) return number :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 16:33 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Сделал функцию, создал селект без union (похожий на тот, что привёл Денис) и никак проблем. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.12.2005, 16:55 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Сорри, но никак не могу понять как имя такой примерно select: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. Получить Entity name рядом с каждым id Атрибута??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 15:08 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Пишу вот так, а не работает, помогите плиз. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 15:40 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
/topic/300566 Posted via ActualForum NNTP Server 1.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 15:40 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Спасибо. Помогло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.07.2006, 16:51 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Наткнулся на статью об SQL/XML в Оракле. Описываются основные функции, новые возможности 10g, примеры, known issues, bugs, присутствуют ссылки на доку, короче XML in Oracle by Example. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.10.2006, 11:29 |
|
||
|
XML в Oracle9i. Примеры разборки
|
|||
|---|---|---|---|
|
#18+
Denis Popov Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. На одной СУБД Oracle этот запрос проходит, на другой нет: ORA-06502: PL/SQL: numeric or value error ORA-06512: at line 1 Oracle 9.2.0.1.0, если я правильно понял. Патч? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.12.2006, 20:09 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=33464384&tid=1886509]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
186ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 503ms |

| 0 / 0 |
