我试图在C#中创建一个小的控制台应用程序,以最快的方式根据XML文件的内容执行对SQL Server 2008中Products(ITEMS)表的插入。我已经有了包含适当映射到SQL表的.XSD文件(根据下面概述的方法可能不必要)。
以下是我的高级方法:
- 读取XML,并使用它创建一个表格。
- 使用从XML文件创建的表格对ITEMS表执行MERGE。
2a. 如果该项存在,则更新它。
2b. 如果该项不存在,则将其插入。 - 仅记录插入到XML中的记录日志。
考虑以下ITEMS表和XML文件:
ITEMS
Item_Id Name Price
1 Coke 5.00
2 Pepsi 3.00
3 Sprite 2.00
ITEMS.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表应该看起来像这样:
ITEMS
Item_Id Name Price
1 Coke 5.00
2 Pepsi 3.00
3 Sprite Zero 1.75
5 Mountain Dew 4.50
完成这一步之后,我还需要生成一个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还很新。非常感谢任何帮助/指导!
items.xml文件中,如果一个产品与数据库中已有的产品(按名称/价格)重复,它将具有相同的ID吗? - ChrisW