2009-04-01 27 views
8

まっすぐ進む直接ルートはありますか? (すなわち、SQL ServerはXMLを読み取ることができます)XMLデータをSQL Serverに保存する最も良い方法は何ですか?

XMLを解析し、通常の方法でADO.Netを使用して個々の行またはバッチ更新として転送するのが最適ですか?

大規模な複雑なストアドプロシージャを含むソリューションが存在する可能性があることを認識しています。これに完全に反対しているわけではありませんが、ビジネスロジックのほとんどをC#コードに入れたいと思う傾向があります。私はSQLXMLBulkLoadを使用して解決策を見ましたが、かなり複雑なSQLコードが必要と思われました。

参考のため、それぞれについて約50個の小さなデータ(文字列と整数)を使って、一度に約100行の作業をします。これは最終的に毎日のバッチジョブになります。

ご提供いただけるコードスニペットは非常に高く評価されます。

+0

どのバージョンのSQL Server? –

+0

私は2008年にアクセスできますが、主にSQL Server 2005を使用しています。 – alchemical

答えて

10

SQL Server 2005以降には、 "XML"という名前のデータ型があります。このデータ型では、型指定されていない、またはXSDスキーマで型指定されたXMLを格納できます。

XMLリテラル文字列からXML型の列を基本的に埋めることができるため、通常のINSERT文を使用してXMLコンテンツをそのフィールドに入力するだけで簡単に使用できます。

マルク・

+0

これを使用してSQL Serverにcmlを取得すると、SQL Serverは何とかXMLをフィールドに解析しますか?あるいは、私はprocやテーブルでこれを手動で行う必要がありますか? – alchemical

+0

いいえ、XMLフィールドとして格納されています.XPathとXQueryを使用してXMLフィールドをクエリできます。あなたは何を探していますか? –

4

関数OPENXMLおよびストアドプロシージャsp_xml_preparedocumentを使用すると、XMLを簡単に行セットに変換できます。

+0

SQL Server 2005以降、sp_xml_preparedocumentを使用しないでください! – gbn

+0

なぜですか?交換品はありますか? – alchemical

2

は、SQL Server 2008(または2005)を使用している場合、それはxmlネイティブ・データ型を持っています。 XSDスキーマをxml変数に関連付け、xmlの列に直接挿入することができます。

2

はい、SQL Server 2005以降では、そのままXMLを解析できます。

あなたが

属性値かどうか、あなたが望むどのようにそれを打破するためにいくつかの恥知らずなプラグ接続ノード、値およびクエリメソッドを使用し

0

をXMLデータとXmlドキュメントは異なる意味を持つ可能性があります。 xmlタイプがデータに適している場合、フォーマットは保存されません(空白が削除されます)。場合によっては、設定ファイルなどの場合、最適なオプションはnvarcharです。

関連する問題