|
Преобразование одного xml в другой вид xml
|
|||
---|---|---|---|
#18+
Добрый день. Подскажите как сделать это быстро в плане производительности при помощи xml команд MS SQL (Xquery) или может чего то еще, но именно в MS SQL без подключения сторонних библиотек и т.п. Есть таблица с 500 тыс. записей. в ней есть поле типа xml следующего вида: <data> <number>17345665</number> <number>19429405</number> <name>Тест1</name> <value1>84</value1> <number>11024248</number> <value1>1</value1> <value2>2</value1> <number>32424244</number> <value3>5</value1> <name>Тест2</name> <value1>6</value1> <value2>8</value1> <value3>10</value1> </data> И нее нужно получить "правильную" xml: <data> <row> <number>17345665</number> </row> <row> <number>19429405</number> <name>Тест1</name> <value1>84</value1> </row> <row> <value1>1</value1> <value2>2</value1> </row> <row> <number>32424244</number> <value3>5</value1> </row> <row> <name>Тест2</name> <value1>6</value1> <value2>8</value1> <value3>10</value1> </row> </data> Известно что 1.Тэги name и number всегда идут раньше чем value1-3 2. name, number, value1-3 - это все тэги которые могут быть 3. Любого элемента может не быть По сути нужно разбить по строчно записи. Парсинг через строку медленно работает. Можете предложить решение или хотя бы направление дать через что идти. Спасибо ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 11:21 |
|
Преобразование одного xml в другой вид xml
|
|||
---|---|---|---|
#18+
может через преобразование xsl попробуете? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 12:43 |
|
Преобразование одного xml в другой вид xml
|
|||
---|---|---|---|
#18+
Вот тут три очень хорошие статьи по работе с XML на SQL сервере Должно вам подойти http://djekmusic.blogspot.com/2012/07/xml-microsoft-sql-server-2008-xml_17.html http://djekmusic.blogspot.com/2012/07/xml-microsoft-sql-server-2008-xml.html http://djekmusic.blogspot.com/2012/07/xml-microsoft-sql-server-2008-xml_23.html ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 13:35 |
|
Преобразование одного xml в другой вид xml
|
|||
---|---|---|---|
#18+
mih.dim1, в общем случае порядок элементов не имеет значения. Например, если такой документ загрузить в DOM, то в свойстве XML вы получите другой порядок строк. OPENXML имеет внутренний нумератор строк, которым можно было бы воспользоваться, но я не знаю - поможет ли он как-то при разборе, не будут ли перестановки. Гарантий нет, в общем-то. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 13:49 |
|
Преобразование одного xml в другой вид xml
|
|||
---|---|---|---|
#18+
Владислав Колосов mih.dim1, в общем случае порядок элементов не имеет значения. Например, если такой документ загрузить в DOM, то в свойстве XML вы получите другой порядок строк. OPENXML имеет внутренний нумератор строк, которым можно было бы воспользоваться, но я не знаю - поможет ли он как-то при разборе, не будут ли перестановки. Гарантий нет, в общем-то. Поскольку это не XML, а бред. То работать с ним надо как с бредом. REPLACE, STRING_SPLIT спасут отца русской демократии. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 13:58 |
|
Преобразование одного xml в другой вид xml
|
|||
---|---|---|---|
#18+
mih.dim1 <value3>10</value1> Где здесь xml ? ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 14:12 |
|
Преобразование одного xml в другой вид xml
|
|||
---|---|---|---|
#18+
env, да ладно вам, в целом понятно чего хочет добиться ТС. полагаю что он там накосячил с закрытием тэгов (очень похоже на копипаст). задача в целом геморная: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20.
ему нужно разбить этот свой xml на список элементов и сгруппировать их по порядку вхождения элементов, при этом каждый раз начинать новую группу если вчтречается элемент который ранее уже был сгруппирован. на вскидку это будет чето типа Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
а потом начинать шаманить с оконками в плане создания групп, повидимому какие то безумные CASE. возможно при такой ломанной логике "новой группы" легче сделать итерационно через while / cursor; написал только для задания вектора над гемморной задачей что то напрягаться не хочется :) ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 14:28 |
|
Преобразование одного xml в другой вид xml
|
|||
---|---|---|---|
#18+
Это цирк просто. Надо написать приложение, причем довольно примитивное, которое добавит нужные строки. Загружаем строку из таблицы, парсим в массив и цикл по массиву строк с проверкой ключевых слов для вставки <row>. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 14:35 |
|
Преобразование одного xml в другой вид xml
|
|||
---|---|---|---|
#18+
mih.dim1, Можно как-то так Код: sql 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 15:00 |
|
Преобразование одного xml в другой вид xml
|
|||
---|---|---|---|
#18+
Код: sql 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.
Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23.
... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2020, 16:28 |
|
Преобразование одного xml в другой вид xml
|
|||
---|---|---|---|
#18+
env mih.dim1 <value3>10</value1> Где здесь xml ? Извеняйте моя опечатка. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2020, 00:36 |
|
Преобразование одного xml в другой вид xml
|
|||
---|---|---|---|
#18+
mih.dim1, Всем спасибо за информацию и оперативные ответы. Сейчас переключили на другую работу, но скоро проверю предложенные варианты и сообщу результат. Пока написал тупой парсинг строк в цикле. За 20 мин отработал. Но ваши варианты куда интереснее. Буду смотреть. ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2020, 00:38 |
|
Преобразование одного xml в другой вид xml
|
|||
---|---|---|---|
#18+
mih.dim1, мне кажется лучше обычным реплейсом Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19.
Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
лишний тэг "роу", можно потом прибить, если надо ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2020, 17:34 |
|
Преобразование одного xml в другой вид xml
|
|||
---|---|---|---|
#18+
HandKot Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
лишний тэг "роу", можно потом прибить, если надо ... |
|||
:
Нравится:
Не нравится:
|
|||
15.10.2020, 18:01 |
|
|
start [/forum/topic.php?fid=46&msg=40008429&tid=1685530]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
others: | 14ms |
total: | 131ms |
0 / 0 |