Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Можно ли развернуть xml в EAV - таблицу одним универсальным запросом?
|
|||
|---|---|---|---|
|
#18+
Коллеги, приветствую! Имеется произвольный xml, например такой: Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Можно ли его преобразовать одним запросом в EAV таблицу? Должно получиться примерно следующее: IDpathvalue0001/rootNULL0001/0001/root/aNULL0001/0001/0001/root/a/@tp1test10001/0001/0002/root/a/bNULL0001/0001/0003/root/a/ctest30001/0002/root/aNULL0001/0002/0001/root/a/@tp2test20001/0002/0002/root/a/bNULL0001/0002/0002/0001/root/a/b/cNULL0001/0002/0002/0001/0001root/a/b/c/@tp3test3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 12:20 |
|
||
|
Можно ли развернуть xml в EAV - таблицу одним универсальным запросом?
|
|||
|---|---|---|---|
|
#18+
uaggster, от чего-то типа такого можно "оттолкнуться" Код: 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. 47. 48. 49. 50. 51. 52. IDpathpathvalue0rootNULL0/2root/aNULL0/2/3root/a/@tp1test10/2/4root/a/bNULL0/2/5root/a/ctest30/6root/aNULL0/6/7root/a/@tp2test20/6/8root/a/bNULL0/6/8/9root/a/b/cNULL0/6/8/9/10root/a/b/c/@tp3test3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 13:23 |
|
||
|
Можно ли развернуть xml в EAV - таблицу одним универсальным запросом?
|
|||
|---|---|---|---|
|
#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. 43. 44. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 13:23 |
|
||
|
Можно ли развернуть xml в EAV - таблицу одним универсальным запросом?
|
|||
|---|---|---|---|
|
#18+
Коллеги, спасибо! invm , отдельное спасибо! Это именно то, что нужно. Правда, (потенциально) быстродействие запроса меня ввергает в уныние. :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.12.2018, 17:59 |
|
||
|
Можно ли развернуть xml в EAV - таблицу одним универсальным запросом?
|
|||
|---|---|---|---|
|
#18+
invm, нет, всё таки ошибка! Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Код: 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. Выдает: namevalueidrootNULL1root/aNULL1/1root/aNULL1/2root/a/bNULL1/2/1root/a/b/cNULL1/2/1/1root/a/bNULL1/1/1root/a/ctest31/1/2root/@tp1tescte1/1root/@tp3tescte31/2root/@tp2test21/3root/a/b/@tp3test31/2/1/4 Проблема тут: root/@tp1tescte1/1root/@tp3tescte31/2root/@tp2test21/3 Подозреваю, что проблема тут: select t.n.query('./*'), a.name + '/' + t.n.value('local-name(.)', 'nvarchar(max)'), t.n.value('text()[1]', 'nvarchar(max)'), a.id + '/' + cast(row_number() over (order by (select 1)) as varchar(max)) from cte a cross apply a.x.nodes('*') t(n) Но исправить не могу. Не понимаю как. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2018, 10:53 |
|
||
|
Можно ли развернуть xml в EAV - таблицу одним универсальным запросом?
|
|||
|---|---|---|---|
|
#18+
uaggster, Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2018, 12:30 |
|
||
|
Можно ли развернуть xml в EAV - таблицу одним универсальным запросом?
|
|||
|---|---|---|---|
|
#18+
invm, и всё равно ошибка :-) namevalueidrootNULL1root/aNULL1/1root/aNULL1/2root/a/bNULL1/2/1root/a/b/cNULL1/2/1/1root/a/bNULL1/1/1root/a/ctest31/1/2root/a/@tp1tescte1/1/1root/a/@tp3tescte31/1/2root/a/@tp2test21/2/1root/a/b/c/@tp3test31/2/1/1/1 root/a/bNULL1/1/1root/a/ctest31/1/2root/a/@tp1tescte1/1/1root/a/@tp3tescte31/1/2 ID одинаковые. Хотя, наверное, для атрибутов логично иметь одинаковый для всех уровень 0. Код: 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. Так? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2018, 12:57 |
|
||
|
Можно ли развернуть xml в EAV - таблицу одним универсальным запросом?
|
|||
|---|---|---|---|
|
#18+
uaggsterТак?Если устраивает, то почему нет? Но, имхо, будет проще через edge-table. к предложил court . Только надо слегка поправить: Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2018, 13:18 |
|
||
|
Можно ли развернуть xml в EAV - таблицу одним универсальным запросом?
|
|||
|---|---|---|---|
|
#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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2018, 14:30 |
|
||
|
Можно ли развернуть xml в EAV - таблицу одним универсальным запросом?
|
|||
|---|---|---|---|
|
#18+
invm, нет, крайний вариант не подходит. Т.к. атрибуты имеют ИД на уровне с тегами, а (ну, логично же?) - они должны иметь ИД на уровне дочернего тега. Т.к. это, по факту, дочерние сущности тега. Т.е: 0001/0001root/a0001/0001/0001root/a/@attrib10001/0001/0002root/a/@attrib20001/0001/0003root/a/c/ т.е., получается, и вариант "так" не подходит! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2018, 16:08 |
|
||
|
Можно ли развернуть xml в EAV - таблицу одним универсальным запросом?
|
|||
|---|---|---|---|
|
#18+
uaggsterТ.к. атрибуты имеют ИД на уровне с тегами, а (ну, логично же?) - они должны иметь ИД на уровне дочернего тега.А если нет дочернего тега? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.12.2018, 16:56 |
|
||
|
Можно ли развернуть xml в EAV - таблицу одним универсальным запросом?
|
|||
|---|---|---|---|
|
#18+
invm, ну... атрибут - своего рода "дочерний тег". Разве нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2018, 07:45 |
|
||
|
Можно ли развернуть xml в EAV - таблицу одним универсальным запросом?
|
|||
|---|---|---|---|
|
#18+
uaggsterinvm, ну... атрибут - своего рода "дочерний тег". Разве нет?Да. Так он и имеет ИД на этом уровне. Мне пока не понятно, что не так с результатом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2018, 08:56 |
|
||
|
Можно ли развернуть xml в EAV - таблицу одним универсальным запросом?
|
|||
|---|---|---|---|
|
#18+
invmМне пока не понятно, что не так с результатом Речь об этом: Код: 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. idnamevalue0000000001rootNULLOk0000000001/0000000001root/aNULLOk0000000001/0000000001/0000000001root/a/bNULLOk0000000001/0000000001/0000000002root/a/ctest3Ok0000000001/0000000002root/aNULLOk0000000001/0000000002/0000000001root/a/bNULLOk0000000001/0000000002/0000000001/0000000001root/a/b/cNULLOk0000000001/0000000002/0000000001/0000000002root/a/b/c/@tp3test3Неверно;атрибут @tp3-принадлежит с и должен иметь ид типа 0000000001/0000000002/0000000001/0000000002/00000000010000000001/0000000003root/a/@tp1tescteНеверно;атрибут @tp1-принадлежит первому a и должен иметь ид типа 0000000001/0000000001/00000000000000000001/0000000004root/a/@tp3tescte3Неверно;атрибут @tp3-принадлежит первому a и должен иметь ид типа 0000000001/0000000001/00000000010000000001/0000000005root/a/@tp2test2Неверно;атрибут @tp2-принадлежит второму a и должен иметь ид типа 0000000001/0000000002/0000000000 Неверные ИД - для примера. Разумеется, конкретные значения должны быть неповторяющимися, с учетом верно обработанных тегов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2018, 09:26 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=39751150&tid=1688553]: |
0ms |
get settings: |
4ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
44ms |
get topic data: |
5ms |
get forum data: |
1ms |
get page messages: |
28ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 321ms |

| 0 / 0 |
