2

我正在寻找一种从 SQL 数据库中提取 XML 并通过 SSIS 批量分解 XML 的方法。我目前有一个包,它可以从数据库中提取 XML 并通过变量将 XML 传递给存储过程以进行粉碎,但这一次只能处理 1 条记录。处理 100,000 条记录时,这可能会变得非常耗时。

我想使用 SSIS 一次粉碎多个 XML 值。SSIS可以做到这一点吗?也许在数据流任务中,所有 XML 值都是从源中选择的,然后传递给某种解析器?

4

1 回答 1

2

所以经过大量搜索和思考问题后,我重新设计了执行粉碎的存储过程。我没有分解传递给存储过程的变量,而是从 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)
于 2011-07-15T19:21:35.733 回答