2012-04-30 69 views
0

在从sql server数据库中删除数据之前,将数据导出并保存为XML文件,以便在稍后阶段恢复该数据。我现在试图从XML文件中将数据回到数据库中,但找不到最好的方法来完成此操作。 SQL服务器导入/导出向导似乎不支持XML。我已经看过XML Bulk Load组件,但这看起来不像我的问题。有没有人有任何建议?sql server 2008 - 将数据从XML文件导入到现有表中

的XML可能看起来像下面,我woud想每一行插入:

<?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> 

回答

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) 
+1

很大,看起来直转发,它如何获得XML文件?另外方括号中的数字1代表什么? – LeeTee

+0

它看起来像从XML读取数据,但是如何将数据插入数据库? – LeeTee

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) 
相关问题