我正在尝试从以下网页导入XML数据:http://www.tcmb.gov.tr/kurlar/today.xml。这是一个不断更新的网页,我希望我的SQL代码获取最新值。导入Unicode XML代码SQL
如果我手动下载xml文件到我的电脑并运行我的SQL代码,它工作没有任何问题:
DECLARE @xmlFile XML
SET @xmlFile = (SELECT * FROM OPENROWSET(BULK 'C:\Users\sqlfreaq\Desktop\today.xml', SINGLE_CLOB) AS xmldata)
SELECT @xmlFile.value('(Tarih_Date/Currency/ForexSelling)[1]', 'decimal(18,5)') AS DatabaseID
然而,当我尝试使用OLE存储过程导入数据,一些Unicode字符发生更改,因此无法分析XML。我的代码如下:
DECLARE @url VARCHAR(300),
@win INT,
@hr INT,
@xml xml
SET @url = 'http://www.tcmb.gov.tr/kurlar/today.xml'
EXEC @hr = sp_OACreate 'WinHttp.WinHttpRequest.5.1', @win OUT
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
EXEC @hr = sp_OAMethod @win, 'Open', NULL, 'GET', @url, 'false'
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
EXEC @hr = sp_OAMethod @win, 'Send'
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
Create table #tmp(dt nvarchar(max))
insert into #tmp exec @hr =sp_OAGetProperty @win, 'ResponseText'
Select
CAST(CAST([dt] AS VARCHAR(MAX)) AS XML) TT
from #tmp -- single column/single row.
Drop Table #tmp -- clean up
EXEC @hr = sp_OADestroy @win
IF @hr <> 0 EXEC sp_OAGetErrorInfo @win
不过,如果我使用此代码从一个非Unicode的XML文件中获取数据(只是更改代码的网站从http://www.tcmb.gov.tr/kurlar/today.xml到http://www.bnr.ro/nbrfxrates.xml,它的工作原理,我可以。修改我的代码或方法,这样我可以使用在线的XML文件。
非常感谢!
我做了改变,但现在我得到一个NULL值作为我的SELECT语句 – SQLfreaq