2

SQLデータベースからXMLをプルし、SSISを介してXMLを一括で細断処理す​​る方法を探しています。現在、データベースからXMLをプルし、変数を介してXMLをストアドプロシージャに渡してシュレッダー処理できるパッケージがありますが、これは一度に1レコードしか機能しません。100,000レコードを処理する場合、これにはかなりの時間がかかる可能性があります。

SSISを使用して複数のXML値を一度に細断処理したいと思います。これはSSISで可能ですか?おそらく、すべてのXML値がソースから選択され、ある種のパーサーに渡されるデータフロータスクの何かですか?

4

1 に答える 1

2

そのため、問題について多くの検索と検討を行った後、シュレッダーを実行するストアドプロシージャを再設計しました。ストアドプロシージャに渡される変数を細断処理す​​る代わりに、XML列自体から細断処理しました。これにより、一度に1つずつストアドプロシージャにループして渡すのではなく、一度に多くの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 に答える