powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Обработка XML с передачей других данных
8 сообщений из 8, страница 1 из 1
Обработка XML с передачей других данных
    #39764226
Максим_78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день!
Имею таблицу с несколькими полями, одно из них содержит XML данные.
Необходимо сформировать новую таблицу, XML строку обработать, а другие параметры просто передать как есть.
По раздельности проблем нет, а как выполнить эти процессы параллельно?
Небольшой нюанс, обработка XML данных порождает несколько новых полей.

Для наглядности пример.
Таблица "MyTable", помимо поля "XML_COLUMN" содержит ещё несколько данных (к примеру: ListID, ItemID) которые нужно также передать в таблицу "@MatrixCondition".

Код: 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.
DECLARE @idoc int
DECLARE @Cond nvarchar(max)
SET @Cond =	(
			select	XML_COLUMN
			from	MyTable
			)
--
EXEC sp_xml_preparedocument @idoc OUTPUT, @Cond

DECLARE
	@MatrixCondition TABLE(							
						IDCounter		char(2),
						ID			char(2),
						OrderNumber	char(2),	
						agrPerson		char(20)										
						)
INSERT INTO @MatrixCondition	(
						IDCounter,
						ID,
						OrderNumber,
						agrPerson
						)
SELECT	*
FROM OPENXML (@idoc, '/Rows/Row', 2) WITH
		(
		IDCounter		char(2)			'../@IDCounter',
		ID				char(2)			'@ID',
		OrderNumber		char(2)			'@OrderNumber',
		agrPerson		char(20)		'Cell[@ColumnName = "agrPerson"]/@Value'
		)

-- Очистка
EXEC sp_xml_removedocument @idoc

select	*
from	@MatrixCondition
...
Рейтинг: 0 / 0
Обработка XML с передачей других данных
    #39764240
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим_78Необходимо сформировать новую таблицу, XML строку обработать, а другие параметры просто передать как есть.
По раздельности проблем нет, а как выполнить эти процессы параллельно?

Взять ETL инструмент, на каждую строку поставить уникальный id, сделать split, часть столбцов таблицы пустить по одному пути, столбец с XML пустить по другому пути, снова сделать split на 4-8 потоков, в них обрабатывать XML в паралелль (id делить на 4 и по условию отправлять в тот или другой поток), далее сделать слияние в таблицу и записать в режиме fast load. Это же очевидно.
...
Рейтинг: 0 / 0
Обработка XML с передачей других данных
    #39764242
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну что, завязывайте с sp_xml_preparedocument и осваивайте xml.query...
...
Рейтинг: 0 / 0
Обработка XML с передачей других данных
    #39764243
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Максим_78По раздельности проблем нет, а как выполнить эти процессы параллельно?
Небольшой нюанс, обработка XML данных порождает несколько новых полей.

Если нужно внутри MSSQL - берете в руки Visual Studio, пишете на C# обработку с явным разделением XML по потокам, создаете CLR сборку, регистрируете в сервере, вызываете с передачей данных. Тоже достаточно просто.
...
Рейтинг: 0 / 0
Обработка XML с передачей других данных
    #39764244
aleks222
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andy_OLAPМаксим_78Необходимо сформировать новую таблицу, XML строку обработать, а другие параметры просто передать как есть.
По раздельности проблем нет, а как выполнить эти процессы параллельно?

Взять ETL инструмент, на каждую строку поставить уникальный id, сделать split, часть столбцов таблицы пустить по одному пути, столбец с XML пустить по другому пути, снова сделать split на 4-8 потоков, в них обрабатывать XML в паралелль (id делить на 4 и по условию отправлять в тот или другой поток), далее сделать слияние в таблицу и записать в режиме fast load. Это же очевидно.

охренеть!
...
Рейтинг: 0 / 0
Обработка XML с передачей других данных
    #39764248
Andy_OLAP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aleks222Andy_OLAPпропущено...

Взять ETL инструмент, на каждую строку поставить уникальный id, сделать split, часть столбцов таблицы пустить по одному пути, столбец с XML пустить по другому пути, снова сделать split на 4-8 потоков, в них обрабатывать XML в паралелль (id делить на 4 и по условию отправлять в тот или другой поток), далее сделать слияние в таблицу и записать в режиме fast load. Это же очевидно.

охренеть!
Вы предлагаете коллеге сложный путь. query - это нужно документацию читать. А если в штате фирмы есть свой ETL / C# мастер, не проще ли автору темы спихнуть на него раздельную обработку XML. И поставленная задача будет решена. Понимаете? Поставленная задача.
...
Рейтинг: 0 / 0
Обработка XML с передачей других данных
    #39764263
invm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Обработка XML с передачей других данных
    #39764339
Максим_78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Andy_OLAPМаксим_78Необходимо сформировать новую таблицу, XML строку обработать, а другие параметры просто передать как есть.
По раздельности проблем нет, а как выполнить эти процессы параллельно?

Взять ETL инструмент, на каждую строку поставить уникальный id, сделать split, часть столбцов таблицы пустить по одному пути, столбец с XML пустить по другому пути, снова сделать split на 4-8 потоков, в них обрабатывать XML в паралелль (id делить на 4 и по условию отправлять в тот или другой поток), далее сделать слияние в таблицу и записать в режиме fast load. Это же очевидно.

Ээээ... Верю, что должно быть очевидно, но...
Надо переварить предложенный метод.
Спасибо!
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Обработка XML с передачей других данных
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]