SQL Server:从Web服务器导入XML?

3

SQL Server是否支持直接从Web服务器加载/读取/传输/导入/提取/插入XML到表中?

假设我想从Web服务器获取XML,例如:

SQL Server 2005(及更高版本)具有本地支持XML数据类型的功能。在过去几个月中,互联网变得非常流行。在互联网上查找信息的能力具有潜在的有用和重要性。

SQL Server是否支持这样的操作?

还是我必须使用(伪代码):

XmlHttpRequest xml = new XmlHttpRequest("http://treasury.gov/ExchangeRates.xml");
SqlServerConnection conn = new SqlServerConnection("neptune", "sa", "password");
conn.Execute("INSERT INTO Exchange Rates (RatesXml) VALUES (%1)", xml.ResponseStream);

编辑一:由于Windows能够通过http打开文件:

http://newegg.com/api/HardDrivePrices.xml

和从本地硬盘打开文件一样透明:

c:\Windows\Temp\HardDrivePrices.xml

我希望SQL Server能够从文件中加载XML。然后,我只需将filename替换为filenameUrl,例如e.g.
CREATE TABLE docs (pk INT PRIMARY KEY, xCol XML not null)

INSERT INTO docs 
SELECT 10, xCol
FROM    (SELECT * FROM OPENROWSET 
      (BULK 'http://www.bankofcanada.ca/stat/fx-xml.xml',
      SINGLE_BLOB) AS xCol) AS R(xCol)

但是出现以下错误:

无法批量加载文件 "http://www.bankofcanada.ca/stat/fx-xml.xml",因为无法打开该文件。操作系统错误代码 123(文件名、目录名或卷标语法不正确)。


请告诉我们,如果您找到/已经找到了解决方案! - cregox
我假设你是那个收藏了它的人。所以你会和我一样,第一时间知道解决方案 :) - Ian Boyd
2个回答

1

请纠正我,但看起来这需要使用Visual Studio。 - Ian Boyd
@Ian,这需要使用VS。我对此一窍不通,但我的想法是SQL Server本身无法完成,因此微软发展了一种外部方法来做到这一点。由于这样会引起安全问题,所以必须采用外部方式。这并不是一个新的请求:https://dev59.com/AUXRa4cB1Zd3GeqPrnDt - cregox
@Cawas,它不需要VS。VS不是做这件事的外部方式。SQL Server不是浏览器,它是DBMS(数据库管理系统)。 - Gennady Vanin Геннадий Ванин

0

我不知道在原生的T-SQL中如何执行此操作,但您可以创建一个CLR函数来下载内容。


但是似乎SQL Server本身不支持从文件中获取XML的功能? - Ian Boyd
为什么不呢?http://www.simple-talk.com/sql/t-sql-programming/reading-and-writing-files-in-sql-server-using-t-sql/ - Gennady Vanin Геннадий Ванин

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接