延續著上一篇直接使用SQL SERVER 2005 開啟XML檔案並讀取內容(一)-應用xp_cmdshell文章,我在提供另一個方法來處理XML檔,當然還有許多種方法可以做處理,等有閒時在多加補充幾個方法。
我的方法如下:
1. 應用SQL SERVER 2005 的OPENXML來處理XML內容結構,至於OPENXML的相關參數,請參考SQL SERVER Online Help。
請將以下的XML內容儲存成Root.xml檔,並置於c:\下。
<ROOT>
<Customer>
<CustomerID>VINET</CustomerID>
<ContactName>Paul Henriot</ContactName>
<Order OrderID="10248" CustomerID="VINET" EmployeeID="5" OrderDate="1996-07-04T00:00:00">
<OrderDetail ProductID="11" Quantity="12"/>
<OrderDetail ProductID="42" Quantity="10"/>
</Order>
</Customer>
<Customer>
<CustomerID>LILAS</CustomerID>
<ContactName>Carlos Gonzlez</ContactName>
<Order OrderID="10283" CustomerID="LILAS" EmployeeID="3" OrderDate="1996-08-16T00:00:00">
<OrderDetail ProductID="72" Quantity="3"/>
</Order>
</Customer>
</ROOT>
3. 利用 SQL SERVER Management Studio來執行以下指令:
DECLARE @xmlContent VARCHAR(max)
SELECT @xmlContent = ''
CREATE TABLE #tempXML(xmlContent VARCHAR(max))
BULK INSERT #tempXML FROM 'C:\root.xml' WITH(ROWTERMINATOR = '\r\n');
SELECT @xmlContent = xmlContent FROM #tempXML
SELECT @xmlContent as xmlContent
DECLARE @XmlDocumentHandle int
EXEC sp_xml_preparedocument @XmlDocumentHandle OUTPUT, @xmlContent
SELECT *
FROM OPENXML (@XmlDocumentHandle, '/ROOT/Customer',2)
WITH (CustomerID varchar(10),
ContactName varchar(20))
EXEC sp_xml_removedocument @XmlDocumentHandle
DROP TABLE #tempXML
參考:http://www.builderau.com.au/architect/webservices/soa/Reading-an-XML-file-from-SQL-Server/0,339024590,339174685,00.htm
2008/7/23 23:41|
閱讀數 : 338
|
我要推薦
|
|
文章分類:
SQL資料庫技術
訂閱
DotBlogs Tags:
SQL
XML