C# で小さなコンソール アプリを作成して、XML ファイルの内容に従って SQL Server 2008 の製品 (ITEMS) のテーブルに挿入を実行しようとしています。SQL テーブルへの適切なマッピングを含む .XSD ファイルが既にあります (以下に概説するアプローチでは必要ない場合があります)。
これが私のアプローチの高レベルです:
- XML を読み取り、それを使用してテーブルを作成します。
- XML ファイルから作成されたテーブルを使用して、ITEMS テーブルに対して MERGE を実行します。
2a. アイテムが存在する場合は、それを更新します。
2b. アイテムが存在しない場合は、挿入します。 - XML に挿入されたレコードのみのログを作成します。
次の ITEMS テーブルと XML ファイルについて考えてみましょう。
アイテム
Item_Id Name Price
1 Coke 5.00
2 Pepsi 3.00
3 Sprite 2.00
アイテム.XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<Item>
<Id>5</Id>
<Name>Mountain Dew</Name>
<Price>4.50</Price>
</Item>
<Item>
<Id>3</Id>
<Name>Sprite Zero</Name>
<Price>1.75</Price>
</Item>
インポート後、ITEMS テーブルは次のようになります。
アイテム
Item_Id Name Price
1 Coke 5.00
2 Pepsi 3.00
3 Sprite Zero 1.75
5 Mountain Dew 4.50
それが完了したら、テーブルに挿入された「新しい」レコード (ITEMS_LOG.XML) を含む XML 形式のログ ファイルも生成する必要があります。
ITEMS_LOG.XML
<?xml version="1.0" encoding="ISO-8859-1"?>
<Item>
<Id>5</Id>
<Name>Mountain Dew</Name>
<Price>4.50</Price>
</Item>
SQLXMLBulkLoad を使用してこれを実装しようとしましたが、残念ながら、必要なログが提供されず、SQL Server から返されたメッセージ (つまり、挿入/更新されたもの) にアクセスすることもできません。私は中級レベルの SQL の専門知識を持っていますが、特にこのコンテキストで XML を扱うのはかなり初めてです。ヘルプ/ガイダンスをいただければ幸いです。