题
我正在寻找一种从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)
不隶属于 StackOverflow