我正在寻找一种从SQL数据库中拉出XML并通过SSIS批量切碎XML的方法。我目前有一个可以从数据库中拉出XML的软件包,并通过变量将XML传递到存储过程中,以进行切碎,但一次只能使用1个记录。处理100,000个记录时,这可能会变得很耗时。

我想使用SSIS一次切碎多个XML值。 SSIS是否可以?也许在数据流任务中的某些内容,其中所有XML值是从源中选择然后传递给某种解析器的所有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