私はすでにこれを読みました: The Best Way to shred XML data into SQL Server database columns and Looking for a good Bulk Insert XML Shredding example for SQL 2005 .
投稿する理由の違いは、BizTalk 2009 と SQL 2008 を使用していることです。
BizTalk を使用しているベンダーから巨大な XML 構造を受け取っています。クライアントは、XML 構造を MS/SQL Server 2008 データベース上の約 30 のテーブルに正規化しました。
魔法の解決策はまだありますか?
私にはこれらがオプションのようです:
1) BizTalk SQL アダプターは単純なフラット データベースにのみ適しています (多くの結合や 1 対多の関係ではありません)。
2) WCF プログラムを作成する a) LINQ を使用して LINQ オブジェクトを公開する b) 従来の XML DOM または SAX 解析を使用して ADO.NET を構築し、データベースに格納する
3) Open/XML を使用する複雑なストアド プロシージャを記述します。
4) データベースを一時的に SQL/XML 列に保存し、他のツールを使用してデータを「細断処理および正規化」します。これを行うSSISには何かありますか?
5) データを XML 列に残し、XML インデックスを使用し、決して正規化しない。醜い XQuery/Xpath ステートメントをビューに埋め込みます。応答時間またはクエリが適切かどうかは不明です。上記の他の手順のいずれかを実行する場合と同じくらい、xquery とビューの生成に時間がかかる場合があります。
#2 または #3 は、テーブルごとに少なくとも 1 ~ 2 時間かかると思います。したがって、テーブルが 30 ある場合、少なくとも 30 (60 時間ではないにしても) のさまざまな退屈でエラーが発生しやすい作業が必要になります。
ありがとう、
ニール・ウォルターズ
12/23 更新: いくつかのサンプル データ:
<ns0:ValAgg xmlns:va="http://msbinfo.com/expresslync/rct/valuation" xmlns:ns0="http://TFBIC.RCT.BizTalk.Orchestrations.ValAgg">
- <MainStreetValuation xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://msbinfo.com/expresslync/rct/valuation">
<ValuationIdentifier>
<RecordId>1928876</RecordId>
<PolicyNumber>ESTIMATE-1928876</PolicyNumber>
<VersionId>6773220</VersionId>
</ValuationIdentifier>
<RecordType>EST</RecordType>
<PolicyStatus>Complete</PolicyStatus>
<DataSource>WEB</DataSource>
<bunch more here/>
<valuationAggregateFlat xmlns="http://tempuri.org/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<policyNumber>ESTIMATE-1928876</policyNumber>
<recordId>1928876</recordId>
<versionId>6773220</versionId>
<updateTimeStamp>2009-12-14T14:50:30.743</updateTimeStamp>
<replacementCost>166129</replacementCost>
<yearBuilt>1999</yearBuilt>
<totalLivingAreaSqFt>2000</totalLivingAreaSqFt>
<primaryRCTRoofTypeCode>15012</primaryRCTRoofTypeCode>
<TOPSRoofType>COPR</TOPSRoofType>
<StdFireRoofType>COPR</StdFireRoofType>
<primaryRTCConstructionTypeCode>10016</primaryRTCConstructionTypeCode>
<constructionType>BV</constructionType>
<hailProofIndicator>false</hailProofIndicator>
<anyWoodRoofIndicator>false</anyWoodRoofIndicator>
<allMetalRoofIndicator>true</allMetalRoofIndicator>
</valuationAggregateFlat>
</ns0:ValAgg>
「MainStreetValuation」が表示されている場所は、「HighValueValuation」など、他のいくつかの複雑なタイプである可能性もあります。これは、高級なものがある家では構造全体が異なります。