1
我正在尋找一種方法從SQL數據庫中提取XML,並通過批量的SSIS碎片化XML。我目前有一個包可以從數據庫中提取XML並通過變量將XML傳遞給一個存儲過程進行粉碎,但這一次只能處理一條記錄。處理100,000條記錄時,這可能會非常耗時。使用SSIS從數據庫中分解XML
我想用SSIS一次性分解多個XML值。這可能與SSIS?也許數據流任務中的所有XML值都是從源中選擇的,然後傳遞給某種解析器?
我正在尋找一種方法從SQL數據庫中提取XML,並通過批量的SSIS碎片化XML。我目前有一個包可以從數據庫中提取XML並通過變量將XML傳遞給一個存儲過程進行粉碎,但這一次只能處理一條記錄。處理100,000條記錄時,這可能會非常耗時。使用SSIS從數據庫中分解XML
我想用SSIS一次性分解多個XML值。這可能與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)