需要将XML在线文档转换为SQL-Server表

时间:2016-01-12 07:18:45

标签: sql sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012

http://www.greaterkashmir.com/feed.aspx?cat_id=2

以上是xml RSS newsFeed文档的在线链接。 我需要检索它并转换SQL表中的每个数据项。

我正在寻找的解决方案如下。在它有一个问题,它返回NULL

How can I to read a XML from a URL using T-SQL?

1 个答案:

答案 0 :(得分:1)

1.将aspx页面保存为xml文档。(我已将其保存为check.xml

2.创建table以存储XML数据,如下所示

 CREATE TABLE xmlinput
 (
  Id INT IDENTITY PRIMARY KEY,
  XMLData XML,
  createdate DATETIME
  )

3.使用xmlinput插入xml文件中的OPENROWSET表,如下所示,

 INSERT INTO xmlinput(XMLData, createdate)
 SELECT CONVERT(XML, BulkColumn) AS BulkColumn, GETDATE() 
 FROM OPENROWSET(BULK '\\DEVSQL2012\SQLServer\check.xml', SINGLE_BLOB) AS x;

4.现在我们必须使用sp_xml_preparedocument存储过程(带有OPENXML函数)来处理    存储在Xmlinput表中的xml数据。

 DECLARE @XML AS XML, @doc AS INT, @SQL NVARCHAR (MAX)

 SELECT @XML = XMLData FROM xmlinput
 --select @XML

 EXEC sp_xml_preparedocument @doc OUTPUT, @XML


 SELECT Category, link, title,description,  pubDate ,guid
 into xmldata

 FROM OPENXML(@doc, 'xml/channel/item')
 WITH 
(
Category [varchar](50)          'category',
link [varchar](100)             'link',
title [varchar](100)            'title',
description [varchar](1000)     'description',
pubDate [varchar](100)          'pubDate',
guid    [varchar](100)          'guid'
)


EXEC sp_xml_removedocument @doc  --Call this sp to remove document cache
GO


select *from xmldata