SSIを使用してDBからXMLを細断します
質問
SQLデータベースからXMLを引き出し、SSIを介してXMLをバルクで細断する方法を探しています。現在、データベースからXMLを引き出し、XMLを変数を介してXMLをストアドプロシージャに渡すことができるパッケージがありますが、これは一度に1つのレコードしか機能しません。 100,000のレコードを処理すると、これは非常に時間がかかる可能性があります。
SSIを使用して、複数の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)
所属していません StackOverflow