【发布时间】:2016-01-12 07:18:44
【问题描述】:
http://www.greaterkashmir.com/feed.aspx?cat_id=2
以上是xml RSS newsFeed 文档的在线链接。 我需要检索它并转换 SQL 表中的每个数据项。
我正在寻找的解决方案如下。其中有一个问题,它返回 NULL
【问题讨论】:
标签: 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
【问题讨论】:
标签: sql sql-server sql-server-2008 sql-server-2008-r2 sql-server-2012
1.将aspx页面保存为xml文档。(我已经保存为check.xml)
2.创建一个table来存储XML数据如下,
CREATE TABLE xmlinput
(
Id INT IDENTITY PRIMARY KEY,
XMLData XML,
createdate DATETIME
)
3.使用OPENROWSET从xml文件中插入xmlinput表,如下所示,
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函数)来处理
xml数据存储在Xmlinput表中。
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
【讨论】: