sql - 从 Web 链接获取数据 XML 文件并显示在 SQL Server 表上
问题描述
我有这个链接https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml我想在 SQL Server 表中放入货币和汇率等两列,如您在链接上看到的那样。
我怎样才能做到这一点?
我会感谢你的帮助。
<?xml version="1.0" encoding="UTF-8"?>
<gesmes:Envelope xmlns:gesmes="http://www.gesmes.org/xml/2002-08-01" xmlns="http://www.ecb.int/vocabulary/2002-08-01/eurofxref">
<gesmes:subject>Reference rates</gesmes:subject>
<gesmes:Sender>
<gesmes:name>European Central Bank</gesmes:name>
</gesmes:Sender>
<Cube>
<Cube time='2021-11-12'>
<Cube currency='USD' rate='1.1448'/>
<Cube currency='JPY' rate='130.50'/>
<Cube currency='BGN' rate='1.9558'/>
<Cube currency='CZK' rate='25.238'/>
<Cube currency='DKK' rate='7.4370'/>
<Cube currency='GBP' rate='0.85505'/>
<Cube currency='HUF' rate='366.15'/>
<Cube currency='PLN' rate='4.6428'/>
<Cube currency='RON' rate='4.9488'/>
<Cube currency='SEK' rate='10.0085'/>
<Cube currency='CHF' rate='1.0568'/>
<Cube currency='ISK' rate='150.40'/>
<Cube currency='NOK' rate='9.9508'/>
<Cube currency='HRK' rate='7.5123'/>
<Cube currency='RUB' rate='82.6649'/>
<Cube currency='TRY' rate='11.3987'/>
<Cube currency='AUD' rate='1.5690'/>
<Cube currency='BRL' rate='6.1902'/>
<Cube currency='CAD' rate='1.4416'/>
<Cube currency='CNY' rate='7.3047'/>
<Cube currency='HKD' rate='8.9206'/>
<Cube currency='IDR' rate='16239.91'/>
<Cube currency='ILS' rate='3.5600'/>
<Cube currency='INR' rate='85.1930'/>
<Cube currency='KRW' rate='1349.10'/>
<Cube currency='MXN' rate='23.6472'/>
<Cube currency='MYR' rate='4.7692'/>
<Cube currency='NZD' rate='1.6293'/>
<Cube currency='PHP' rate='56.995'/>
<Cube currency='SGD' rate='1.5494'/>
<Cube currency='THB' rate='37.527'/>
<Cube currency='ZAR' rate='17.4919'/>
</Cube>
</Cube>
</gesmes:Envelope>
解决方案
看起来你需要这样的东西:
WITH
DEFAULT 'http://www.ecb.int/vocabulary/2002-08-01/eurofxref',
'http://www.gesmes.org/xml/2002-08-01' AS gesmes)
INSERT YourRateTable (Currency, Rate)
SELECT
x.cube.value('@currency','char(3)'),
x.cube.value('@rate','decimal(18,9)')
FROM @xml.nodes('/gesmes:Envelope/Cube/Cube/Cube') x(cube);
要将数据导入 SQL Server,请不要尝试使用诸如sp_OA
加载数据之类的技巧。
相反,使用类似 Powershell 的东西Invoke-WebRequest
,并将其传递给 usingInvoke-SqlCmd
或 dba-tools'sInvoke-Query
Install-Module dbatools
$xml = (Invoke-WebRequest -Uri "https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml").Content;
$query = @"THEABOVEQUERY";
Invoke-DbaQuery -SqlInstance "yourserver" -Query $query -SqlParameter @{ Name = "@xml"; Value = $xml; SqlDbType = "Xml" };
推荐阅读
- asp.net - 将 Docker 映像保存 IP 地址从 Windows 传输到 Linux
- c - 在C编程++arrayname[value[i]/10]中执行这条语句时,对数组做了什么动作?
- windows-10 - 如何将 explorer.exe 设置为在 Windows 10 启动时运行?
- react-native - 隐藏标记标注直到 animateToRegion 完成
- vb.net - 在我重新编译之前,Visual Studio 2019 不会通知我错误
- java - 如何在 Windows 命令行中为 Android Studio 的密钥库签名生成 .jpk 签名文件?
- c# - 如何检查HashSet
- > 包含列表的重复值
在 C# 中? - javascript - 根据包含索引的数组从数组中获取元素
- python - 为什么 decimal.getcontext().prec=3 不适用于 decimal.Decimal(1.234)
- laravel - 试图在laravel中获取darksky api数据