XML文檔插入SQL Server2000資料庫(2)

來源:互聯網
上載者:User

在XML文檔插入SQL Server2000資料庫(1) (http://blog.csdn.net/LoveLion/archive/2006/09/18/1237263.aspx 
)中我講了一下怎麼將XML文檔插入SQL server 2000資料庫,但是有一個問題,怎麼將一個現存的xml文檔插入資料庫,不把xml文檔當成字串來處理,而把它當作一個外部檔案讀入之後再進行處理,通過參考相關資料,可以通過下面的方法來進行操作:(假設電腦C盤下有一個名為product.xml的xml檔案,其根節點/子節點是'/productdata/PRODUCTS'),該檔案代碼如下:

<?xml version="1.0" encoding="gb2312"?>
<productdata>
<PRODUCTS PRODUCTID="P030" PRODUCTNAME="BARBIE DOLL" DESCRIPTION="THIS IS A TOY FOR GIRLS" CATEGORY="TOY" PRICE="120" QOH="10" />
<PRODUCTS PRODUCTID="P031" PRODUCTNAME="MINI RACE CAR" DESCRIPTION="THIS IS A TOY FOR BOYS" CATEGORY="TOY" PRICE="130" QOH="12" />
<PRODUCTS PRODUCTID="P032" PRODUCTNAME="BABYS RATTLE" DESCRIPTION="THIS IS A TOY FOR BABIES" CATEGORY="TOY" PRICE="80" QOH="24" />
</productdata>

通過以下程式在查詢分析器中執行可以將以上資料插入表PRODUCTS:

DECLARE @FileName VARCHAR(255)
DECLARE @ExecCmd VARCHAR(255)
DECLARE @FileContents VARCHAR(8000)
DECLARE @idoc int
DECLARE @y INT
DECLARE @x INT
CREATE TABLE #tempXML(PK INT NOT NULL IDENTITY(1,1), ThisLine VARCHAR(255))
SET @FileName = 'C:/product.xml'
SET @ExecCmd = 'type ' + @FileName
SET @FileContents =''
INSERT INTO #tempXML EXEC master.dbo.xp_cmdshell @ExecCmd
SELECT @y = count(*) from #tempXML
SET @x = 0
WHILE @x <> @y
BEGIN
SET @x = @x + 1
SELECT @FileContents = @FileContents + ThisLine from #tempXML WHERE PK = @x
END
SELECT @FileContents as FileContents
DROP TABLE #tempXML

EXEC sp_xml_preparedocument @idoc OUTPUT, @FileContents
SELECT *
FROM OPENXML (@idoc, '/productdata/PRODUCTS', 1)
WITH (PRODUCTID char(4),
      PRODUCTNAME VARCHAR(50),
      DESCRIPTION varchar(100),
      CATEGORY varchar(10)
)
INSERT PRODUCTS
SELECT *
FROM OPENXML(@idoc, '/productdata/PRODUCTS')
WITH PRODUCTS
EXEC sp_xml_removedocument @idoc

select * from products

該程式將XML文檔首先以行為單位迴圈讀入一個字串變數@FileContents ,並建立一個暫存資料表#tempXML來儲存該xml文檔產生的字串,待檔案處理完畢後刪除該暫存資料表,把@FileContents 帶入http://blog.csdn.net/LoveLion/archive/2006/09/18/1237263.aspx 所述方法中進行處理.從而實現對外部xml文檔的插入.

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.