Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
导入到SQL Server表中的多个Json对象_Json_Sql Server - Fatal编程技术网

导入到SQL Server表中的多个Json对象

导入到SQL Server表中的多个Json对象,json,sql-server,Json,Sql Server,我正在尝试将货币数据导入表中 通过从OPENJSON(@JSON,$.currency.0“)中指定,我可以导入其中一个数据对象,但是我正在努力找到一个解决方案,帮助我将所有5种货币收集到自己的列中 我想将每种货币的唯一JSON对象头用作数据项(DefaultCurrencyCode) 这是JSON数据: "currency": { "0": { "ISOCode": "USD", &

我正在尝试将货币数据导入表中

通过从OPENJSON(@JSON,$.currency.0“)中指定
,我可以导入其中一个数据对象,但是我正在努力找到一个解决方案,帮助我将所有5种货币收集到自己的列中

我想将每种货币的唯一JSON对象头用作数据项(DefaultCurrencyCode)

这是JSON数据:

"currency": {
    "0": {
      "ISOCode": "USD",
      "name": "US Dollar",
      "symbol": "$",
    },
    "1": {
      "ISOCode": "IEP",
      "name": "Irish Pound or Punt",
      "symbol": "£",
    },
    "2": {
      "ISOCode": "BEF",
      "name": "Belgian Franc",
      "symbol": "₣",
    },
    "3": {
      "ISOCode": "ZAR",
      "name": "South African Rand",
      "symbol": "R",
    },
    "4": {
      "ISOCode": "JPY",
      "name": "Japanese Yen",
      "symbol": "¥",
    }
   }
这是我的SQL Server代码:

DECLARE @JSON VARCHAR(MAX)

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

SELECT ISOCode, name, symbol ,DefaultCurrencyCode
INTO TestTable2
  FROM OPENJSON (@JSON, '$.currency."0"')
  WITH (
    ISOCode VARCHAR(10),
    name VARCHAR(50),
    symbol VARCHAR(50),
    DefaultCurrencyCode INT)

    Select * From TestTable2
这是我当前的输出,但是我正在尝试获取所有输出。

您需要一个额外的带有显式模式的
OPENJSON
调用来从嵌套的
JSON
对象获取数据

JSON:

声明:

SELECT j2.*
FROM OPENJSON(@json, '$.currency') j1
CROSS APPLY OPENJSON(j1.[value]) WITH (
    ISOCode NVARCHAR(10),
    name NVARCHAR(50),
    symbol NVARCHAR(50),
    DefaultCurrencyCode INT
) j2
输出:

-------------------------------------------------------
ISOCode name                symbol  DefaultCurrencyCode
-------------------------------------------------------
USD     US Dollar           $   
IEP     Irish Pound or Punt £   
BEF     Belgian Franc       ₣   
ZAR     South African Rand  R   
JPY     Japanese Yen        ¥   

您需要一个额外的带有显式模式的
OPENJSON
调用来从嵌套的
JSON
对象获取数据

JSON:

声明:

SELECT j2.*
FROM OPENJSON(@json, '$.currency') j1
CROSS APPLY OPENJSON(j1.[value]) WITH (
    ISOCode NVARCHAR(10),
    name NVARCHAR(50),
    symbol NVARCHAR(50),
    DefaultCurrencyCode INT
) j2
输出:

-------------------------------------------------------
ISOCode name                symbol  DefaultCurrencyCode
-------------------------------------------------------
USD     US Dollar           $   
IEP     Irish Pound or Punt £   
BEF     Belgian Franc       ₣   
ZAR     South African Rand  R   
JPY     Japanese Yen        ¥   
看看这是否有帮助。看起来您需要删除打开的
,'$.currency.0'
,并使用
设置
部分中的列格式。请查看这是否有帮助。看起来您需要删除open中的
,“$.currency.”0“
,并使用
部分格式化
中的列。