首页 > 解决方案 > 将嵌套的 JSON 数据从 API 导入 SQL Server 中的单个表

问题描述

我有一些从 API URL 获取的嵌套 JSON 数据,我需要将这些数据存储到 SQL Server 中的单个表中,但我无法找到不涉及使用多个表的解决方案。

我所拥有的,以及我在下面尝试过的:

这是我从 API 获得的 JSON 数据:

{
    "Localnumber":"8888",
    "Name":"Some Name",
    "Description":null,
    "Email":"some@email.com",
    "PhoneNumbers":[
       {
          "Number":"88888888",
          "LineName":null,
          "BelongsTo":"8888",
          "GotoLocalNumber":null
       },
       {
          "Number":"22222222",
          "LineName":null,
          "BelongsTo":"8888",
          "GotoLocalNumber":null
       }
    ],
    "Phones":[
       {
          "LocalNumber":"200000",
          "Name":null,
          "Type":21,
          "MAC":null,
          "BelongsTo":"8888",
          "description":"Myfone"
       },
       {
          "LocalNumber":"200001",
          "Name":null,
          "Type":8,
          "MAC":"22222222",
          "BelongsTo":"2931",
          "description":"Mobile (22222222)"
       },
       {
          "LocalNumber":"200002",
          "Name":null,
          "Type":23,
          "MAC":null,
          "BelongsTo":"8888",
          "description":"Some Description"
       }
    ],
    "Info":[
       {
          "Type":0,
          "Label":null,
          "Value":null
       }
    ],
    "Department":null
 }

我已经尝试过小规模的,只是想看看我是否可以使用以下方法从中获取一些数据:

DECLARE @JSON varchar(max)

SELECT @JSON = BulkColumn
FROM OPENROWSET (BULK 'https://public.somedomain.net/api/employee?account=XXXX&hash=XXXXXXXXXXXXXXXXXXXXXX', SINGLE_CLOB) import
SELECT *
FROM OPENJSON (@JSON)
WITH 
(
    [Localnumber] varchar(20), 
    [Name] varchar(20), 
    [Description] varchar(20), 
    [Email] varchar(20) 
)

但我收到以下错误:

消息 4861,级别 16,状态 1,行 2
无法批量加载,因为无法打开文件“https://public.sippeer.dk/api/employee?account=8493&hash=1SORJvBGzfCMXvc2kwGfbbC-HTIkJd”。操作系统错误代码 123(文件名、目录名或卷标语法不正确。)。

任何可以让我“走上正轨”解决这个问题的帮助都非常感谢。

标签: jsonsql-servertsql

解决方案


推荐阅读