0

在从 sql server 数据库中删除数据之前,将其导出并保存为 XML 文件,以备稍后恢复该数据时使用。我现在正试图将数据从 XML 文件中取回数据库,但找不到最佳方法。SQL Server 导入/导出向导似乎不支持 XML。我查看了 XML Bulk Load 组件,但这看起来不适用于我的问题。有人有什么建议吗?

XML 可能如下所示,我希望插入每一行:

<?xml version="1.0" encoding="UTF-8"?>
<products>
<product>
<prod_id>4235823</prod_id>
<productImageURL>image1.jpg</productImageURL>
<entryDate>Aug 30 2011 01:47:08:317PM</entryDate>
<category>859191</category>
<productDescription>product description 1</productDescription>
<productName>product name 1</productName>
<Price>9.99</Price>
</product>
<product>
<prod_id>8989595</prod_id>
<productImageURL>image2.jpg</productImageURL>
<entryDate>Aug 30 2011 01:47:08:317PM</entryDate>
<category>859191</category>
<productDescription>product description 2</productDescription>
<productName>product name 2</productName>
<Price>2.99</Price>
</product>
<product>
<prod_id>4575454</prod_id>
<productImageURL>image3.jpg</productImageURL>
<entryDate>Aug 30 2011 01:47:08:317PM</entryDate>
<category>859191</category>
<productDescription>product description 3</productDescription>
<productName>product name 3</productName>
<Price>5.99</Price>
</product>
</products>
4

2 回答 2

0

经过一番研究,我发现我需要以下内容:

DECLARE @xml xml
SET @xml = N'<Products>
<Product>
<id>4</id>
<name>Amy</name>
<age>25</age>
</Product>
<Product>
<id>7</id>
<name>Vicky</name>
<age>40</age>
</Product>
</Products>'


INSERT INTO dbo.leanne_test (id, name, age)


SELECT
 doc.col.value('id[1]', 'nvarchar(10)') id
,doc.col.value('name[1]', 'varchar(100)') name 
,doc.col.value('age[1]', 'nvarchar(10)') age 
FROM @xml.nodes('/Products/Product') doc(col)
于 2012-05-01T13:07:54.590 回答
0
SELECT
    p.value('prod_id[1]','INT'),
    p.value('productImageURL[1]','VARCHAR(100)'),
    p.value('category[1]','VARCHAR(100)'),
    p.value('productDescription[1]','VARCHAR(1000)'),
    p.value('productName[1]','VARCHAR(100)'),
    p.value('Price[1]','money'),            
FROM @xmlfile.nodes('/Products/Product') as Product(p)
于 2012-04-30T14:53:24.623 回答