を挿入します。バルクは、私は次のようなXML構造を持つXML RAWデータからのSQL Server 2008 R2へ
<tables>
<table name="tableName1">
<row ID="34" col1="data" col2="dom" />
<row ID="35" col1="data2" col2="dom2" />
</table>
<table name="tableName2">
<row ID="1" col1="data" col2="dom" col3="item1" />
<row ID="3" col1="data2" col2="dom2" col3="item2" />
<row ID="7" col1="data4" col3="item3" />
</table>
...
<tables>
基本的には、テーブルノードがFOR XML RAW
を選択して作成したRAWデータが含まれています。
今私は逆を行いたい:XMLを読んで、SQL Server 2008 R2のデータベースの各テーブルにデータを挿入します。しかし、私はロード・プロセスが堅牢であることを願っています。つまり、将来変更される場合は、列名と表名を混乱させたくありません。テーブルノードの属性@name
からテーブル名を読み込み、<Row>
ノードの属性で指定されたカラムにデータを挿入するプロセスが必要です。私は入力としてXMLを取得し、残りを行うストアドプロシージャを考えました。
データの量は約です。 10〜30 000行の70個のテーブル、合計100 000個の行。私は可能な限り効率的にそれを行う必要があり、一括読み込みは最高です。
XML内のテーブルの順序が構築されているため、外部キーを処理してはいけません。そのため、FK制約は、1つのテーブルを別のテーブルにロードして保持することができます。
は、しかし、私は前に、各テーブルを処理した後
SET Identity_Insert ON and SET Identity_Insert OFF
を行う必要があり、各テーブルにID列があります。また、すべての行を挿入した後に各テーブルを再配置する必要があります。ああ、私は何かがうまくいかない場合は、私がロールバックできるようにトランザクションでシバン全体を行う必要があります。
どっちあなたは私が行くお勧めします:私は、T-SQLに滞在またはCLR SQLでSPを書いてみる必要がありますか? XQueryを使用するか、一部の一括挿入メソッドを使用できますか?
ありがとうございました!
SQLBulkCopyクラスが必要でした。データを高速に処理でき、適切なオプションで安全です。アイデアをありがとう。 – Daniel