2012-04-30 1 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) 
Смежные вопросы