You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将多对象JSON批量导入SQL Server并提取全部货币数据

解决SQL Server中导入全部货币JSON数据的问题

我来帮你搞定这个问题!你目前的代码因为指定了$.currency."0"这个具体路径,所以只能抓取单个货币对象。要一次性导入所有5种货币,同时把JSON里的数字键(0、1、2、3、4)作为DefaultCurrencyCode字段的值,可以通过嵌套使用OPENJSON来实现,具体步骤如下:

修正后的完整SQL代码

DECLARE @JSON VARCHAR(MAX)
SELECT @JSON = BulkColumn FROM OPENROWSET (BULK 'C:\dev\src\Client\config\common\config.json', SINGLE_CLOB) AS j

-- 导入全部货币数据,同时获取JSON键作为DefaultCurrencyCode
SELECT 
    c.ISOCode,
    c.name,
    c.symbol,
    CAST(curr.key AS INT) AS DefaultCurrencyCode
INTO TestTable2
FROM OPENJSON (@JSON, '$.currency') AS curr
CROSS APPLY OPENJSON(curr.value)
WITH (
    ISOCode VARCHAR(10),
    name VARCHAR(50),
    symbol VARCHAR(50)
) AS c

-- 验证结果
SELECT * From TestTable2

代码关键点解释

  • OPENJSON (@JSON, '$.currency') AS curr:这一步会遍历currency下的所有子对象,返回三个列:key(就是你需要的0-4数字)、value(每个货币的JSON对象字符串)、type(数据类型)。
  • CROSS APPLY OPENJSON(curr.value) WITH (...) AS c:对每个curr.value(单个货币的JSON)进行解析,提取出ISOCode、name、symbol三个字段。
  • CAST(curr.key AS INT) AS DefaultCurrencyCode:把curr.key(原本是字符串类型的"0""1"等)转换成INT类型,作为DefaultCurrencyCode的值存入表中。

运行这段代码后,你的TestTable2就会包含全部5条货币数据,每个数据的DefaultCurrencyCode对应JSON里的数字键啦。

内容的提问来源于stack exchange,提问作者GrahamNorton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 06:27:30