2012-04-30 9 views
0

SQL Serverデータベースからデータを削除する前に、このデータを後で復元する場合にエクスポートしてXMLファイルとして保存します。私は現在、XMLファイルからデータベースにデータを戻そうとしていますが、これを実行する最善の方法を見つけることができません。 SQLサーバーのインポート/エクスポートウィザードはXMLをサポートしていません。私はXMLの一括読み込みコンポーネントを見てきましたが、これは私の問題ではうまくいかないようです。誰にも何か提案はありますか?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) 
関連する問題