Вопрос

Я ищу способ вытащить XML из базы данных SQL и набрать XML через SSI. В настоящее время у меня есть пакет, который может вытащить XML из базы данных и передавать XML в хранимую процедуру через переменную, для измельчения, но это работает только 1 запись за раз. При обработке 100 000 записей это может стать довольно много времени.

Я хотел бы измельчить несколько значений XML сразу, используя SSIS. Возможно ли это с SSIS? Возможно, что -то в задаче потока данных, где все значения XML выбираются из источника, а затем передается какому -либо анализатору?

Это было полезно?

Решение

Поэтому после большого поиска и размышлений о проблеме я перепроектировал хранимые процедуры, которые сделали измельчение. Вместо того, чтобы уничтожить переменную, передаваемую в хранимую процедуру, я просто вырвался из самого столбца XML. Это позволило мне измельчить многие значения XML одновременно вместо того, чтобы зацикливаться и передавать их в хранимую процедуру по одному. Это дало мне повышение производительности, которое я искал. Так что вместо чего -то подобного ...

SET @xmlData = CAST(@xmlMessageData AS XML)

SELECT
   , row.value('xmlNode1[1]', 'BIT' )                   AS Column1  
   , row.value('xmlNode2[1]', 'NVARCHAR(255)')          AS Column2
   , row.value('xmlNode3[1]', 'BIT' )                   AS Column3
   , row.value('xmlNode4[1]/Name[1]', 'NVARCHAR(255)' ) AS Column4
FROM @xmlData.nodes('xmlRootNode') AS T1(row)

Теперь я делаю это ...

SELECT
   , row.value('xmlNode1[1]', 'BIT' )                   AS Column1  
   , row.value('xmlNode2[1]', 'NVARCHAR(255)')          AS Column2
   , row.value('xmlNode3[1]', 'BIT' )                   AS Column3
   , row.value('xmlNode4[1]/Name[1]', 'NVARCHAR(255)' ) AS Column4
FROM [ESBMessagesData] D
CROSS APPLY
    [DataItem].nodes('xmlRootNode') AS T1(row)
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top