|
sqlXmlBulkLoader и загрузка бинарных атрибутов
|
|||
---|---|---|---|
#18+
XML Код: xml 1.
XSD Код: xml 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22.
Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Отгребаю Код: xml 1.
Таблица успешно создается, НО вставить - не выходит. Код: sql 1. 2. 3. 4. 5. 6. 7.
Может есть знающие секрет этого фокуса? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 09:39 |
|
sqlXmlBulkLoader и загрузка бинарных атрибутов
|
|||
---|---|---|---|
#18+
Секрет в "0x" Код: sql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 10:22 |
|
sqlXmlBulkLoader и загрузка бинарных атрибутов
|
|||
---|---|---|---|
#18+
invm Секрет в "0x" Код: sql 1. 2. 3. 4.
Спасибо, канешно. Это здорово. Надо массированно грузить SQLXMLBulkLoad. Т.е. править исходный XML не вариант. Может есть еще знатоки 80 левела? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 10:31 |
|
sqlXmlBulkLoader и загрузка бинарных атрибутов
|
|||
---|---|---|---|
#18+
aleks222 Т.е. править исходный XML не вариант. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 10:39 |
|
sqlXmlBulkLoader и загрузка бинарных атрибутов
|
|||
---|---|---|---|
#18+
invm aleks222 Т.е. править исходный XML не вариант. Это я и делаю. Хочется проще и быстрее. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 10:49 |
|
sqlXmlBulkLoader и загрузка бинарных атрибутов
|
|||
---|---|---|---|
#18+
Чтобы быстро загрузить xml он должен быть валидный. Если Вы проверите исходный xml Вашей схемой то получите ошибку, потому что hexBinary это hexBinary has a lexical representation where each binary octet is encoded as a character tuple, consisting of two hexadecimal digits ([0-9a-fA-F]) representing the octet code. For example, "0FB7" is a hex encoding for the 16-bit integer 4023 (whose binary representation is 111110110111). тут Поэтому либо сделать корректным поле stamp или конвертировать данные после загрузки. PS: в название таблицы "Сurrentstamp" первая буква русская. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 17:00 |
|
sqlXmlBulkLoader и загрузка бинарных атрибутов
|
|||
---|---|---|---|
#18+
FantomGood Чтобы быстро загрузить xml он должен быть валидный. Если Вы проверите исходный 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. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35.
... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 17:51 |
|
sqlXmlBulkLoader и загрузка бинарных атрибутов
|
|||
---|---|---|---|
#18+
Извиняюсь, хочу немножко потроллить автора Берется SSIS, в Script task забирается поток XML, парсится, трансформируется и пакетно записывается в БД. Массированно, быстро и несложно даже для "кнопкодава" типа меня. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 17:55 |
|
sqlXmlBulkLoader и загрузка бинарных атрибутов
|
|||
---|---|---|---|
#18+
.Евгений Извиняюсь, хочу немножко потроллить автора Берется SSIS, в Script task забирается поток XML, парсится, трансформируется и пакетно записывается в БД. Массированно, быстро и несложно даже для "кнопкодава" типа меня. Не в рамках троллинга, информации получения для. Предположим, у вас есть около 100 тысяч файлов, размером от 10 кБайт до 100 Мбайт, сложно-подчиненный xml из 10 таблиц, около 300 полей. Сколько займет верификация и загрузка в набор реляционно-связанных таблиц с синтетическими ключами? ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 19:19 |
|
sqlXmlBulkLoader и загрузка бинарных атрибутов
|
|||
---|---|---|---|
#18+
.Евгений Извиняюсь, хочу немножко потроллить автора Берется SSIS, в Script task забирается поток XML, парсится, трансформируется и пакетно записывается в БД. Массированно, быстро и несложно даже для "кнопкодава" типа меня. Без SSIS и прочего геморроя. Ну... не так оказывается в XML положено binary писать. Увы. Хотя, XML не жалуется, а подло транслирует в null. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 20:38 |
|
sqlXmlBulkLoader и загрузка бинарных атрибутов
|
|||
---|---|---|---|
#18+
uaggster .Евгений Извиняюсь, хочу немножко потроллить автора Берется SSIS, в Script task забирается поток XML, парсится, трансформируется и пакетно записывается в БД. Массированно, быстро и несложно даже для "кнопкодава" типа меня. Не в рамках троллинга, информации получения для. Предположим, у вас есть около 100 тысяч файлов, размером от 10 кБайт до 100 Мбайт, сложно-подчиненный xml из 10 таблиц, около 300 полей. Сколько займет верификация и загрузка в набор реляционно-связанных таблиц с синтетическими ключами? Более-менее точно не могу сказать, слишком большой разброс размера. Также сильно повлияет количество ядер (распараллеливание). Поэтому скажу так: парсинг XML в реляционные данные выполнялся бы кодом C# (XMLReader? XMLDocument + XPathNavigator?) с соответствующей скоростью. В моем случае обрабатывается поток XML объемом 10 кб из источника - шины со скоростью до 700 сообщений/сек. Парсить можно было бы и больше, но не успевает пакетная запись в БД (гарантированное сохранение принятых сообщений). Задержка обновления основного набора данных (разрешение ключей в суррогатные) на максимальных скоростях держится в пределах минуты от момента получения, норма - полминуты. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 23:11 |
|
sqlXmlBulkLoader и загрузка бинарных атрибутов
|
|||
---|---|---|---|
#18+
aleks222 Ну... не так оказывается в XML положено binary писать. Увы. Хотя, XML не жалуется, а подло транслирует в null. ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 23:24 |
|
sqlXmlBulkLoader и загрузка бинарных атрибутов
|
|||
---|---|---|---|
#18+
.Евгений Также сильно повлияет количество ядер (распараллеливание). Поэтому скажу так: парсинг XML в реляционные данные выполнялся бы кодом C# (XMLReader? XMLDocument + XPathNavigator?) с соответствующей скоростью. В моем случае обрабатывается поток XML объемом 10 кб из источника - шины со скоростью до 700 сообщений/сек. Парсить можно было бы и больше, но не успевает пакетная запись в БД... начиная от Scala-Spark на DataBricks, DataLake (Gen1 с его U-SQL через кастомные C# Extractors) или Gen2 напрямую при помощи ADF/DataFactory, даже тот-же современный MPP/Synapse (бывший APS/PDW) эти вопросы решает интегрировано. Так что вопрос чисто местной политики по балансу требуемой цены/скорости{производительности} в пределах SLA как решать.. можно и тысячу Kитайцев/Индусов нанять в ручную переписывать... Azure Service-Bus / Queue storage вполне справляется с такими нагрузками (на SQL вроде Service Broker назывался), там на самом дешевом плане предел вроде 2 тыс сообщений в секунду на контейнере.. На Service Bus размер сообщения до 1Мб (против 64КБ на Queue) У нас пиковые нагрузки побольше - поэтому потоковые букеты JSON/XML из разных источников пробуем мешать с Cosmos DB ... |
|||
:
Нравится:
Не нравится:
|
|||
17.12.2020, 23:32 |
|
sqlXmlBulkLoader и загрузка бинарных атрибутов
|
|||
---|---|---|---|
#18+
.Евгений В моем случае обрабатывается поток XML объемом 10 кб из источника - шины со скоростью до 700 сообщений/сек. sqlXmlBulkLoad загружает раз в пять быстрее. Одной строчкой кода и одной схемой. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2020, 05:24 |
|
sqlXmlBulkLoader и загрузка бинарных атрибутов
|
|||
---|---|---|---|
#18+
aleks222 Ну... не так оказывается в XML положено binary писать. Увы. Хотя, XML не жалуется, а подло транслирует в null. Это by design так: In XQuery, most dynamic errors are mapped to an empty sequence ("()"). However, these are the two exceptions: Overflow conditions in XQuery aggregator functions and XML-DML validation errors. Note that most dynamic errors are mapped to an empty sequence. Otherwise, query execution that takes advantages of the XML indexes may raise unexpected errors. Therefore, to provide an efficient execution without generating unexpected errors, SQL Server Database Engine maps dynamic errors to (). https://docs.microsoft.com/en-us/sql/xquery/error-handling-xquery?view=sql-server-ver15 .Евгений Поэтому скажу так: парсинг XML в реляционные данные выполнялся бы кодом C# (XMLReader? XMLDocument + XPathNavigator?) с соответствующей скоростью. Только XmlReader (в виде инкапсулирующей оберки, которая имплементирует IDataReader). Остальные 2 варианта предполагают полную загрузку документа, и хранение в памяти его разобранной модели. Если XML будет с пяток гигов, то, сами понимаете. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2020, 06:02 |
|
sqlXmlBulkLoader и загрузка бинарных атрибутов
|
|||
---|---|---|---|
#18+
Сон Веры Павловны .ЕвгенийПоэтому скажу так: парсинг XML в реляционные данные выполнялся бы кодом C# (XMLReader? XMLDocument + XPathNavigator?) с соответствующей скоростью. Только XmlReader (в виде инкапсулирующей оберки, которая имплементирует IDataReader). Остальные 2 варианта предполагают полную загрузку документа, и хранение в памяти его разобранной модели. Если XML будет с пяток гигов, то, сами понимаете.Ага, там квадратичная зависимость скорости импорта от объёма документа. Плюс линейная потребления памяти, а если документ не 1 гб, а 100? XmlReader очень быстр, я его использовал, притом в режиме балка, имплементируя IDataReader, но код, конечно, получается немаленький. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2020, 08:59 |
|
sqlXmlBulkLoader и загрузка бинарных атрибутов
|
|||
---|---|---|---|
#18+
aleks222 .Евгений В моем случае обрабатывается поток XML объемом 10 кб из источника - шины со скоростью до 700 сообщений/сек. sqlXmlBulkLoad загружает раз в пять быстрее. Одной строчкой кода и одной схемой. Я же объяснил, что скорость у меня ограничивается не парсингом, а совсем другим. Поскольку объемы отдельных XML не измеряются гигабайтами, то прекрасно работает связка XMLDocument + XPathNavigator, которой подсовывается набор подготовленных аналитиком XPath, а я просто маплю их на поля таблиц - что гораздо проще, чем составление схемы или парсинг посредством SQL. alexeyvg XmlReader очень быстр, я его использовал, притом в режиме балка, имплементируя IDataReader, но код, конечно, получается немаленький. ... |
|||
:
Нравится:
Не нравится:
|
|||
18.12.2020, 09:42 |
|
|
start [/forum/topic.php?fid=46&fpage=39&tid=1685281]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
51ms |
get tp. blocked users: |
2ms |
others: | 15ms |
total: | 148ms |
0 / 0 |