Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.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
如何将json对象转换为2个sql表?_Sql_Json_Sql Server_Tsql - Fatal编程技术网

如何将json对象转换为2个sql表?

如何将json对象转换为2个sql表?,sql,json,sql-server,tsql,Sql,Json,Sql Server,Tsql,我有一个JSON对象,如下所示: { "headers": { "Employee": [ "Id", "Name", "Salary", "DepartmentId"], "Department": ["Id", "Name"] },

我有一个JSON对象,如下所示:

{
    "headers": { "Employee": [ "Id", "Name", "Salary", "DepartmentId"], 
                 "Department": ["Id", "Name"]
               }, 
    "rows": { "Employee": [
                              [1, "Joe", 70000, 1], 
                              [2, "Jim", 90000, 1], 
                              [3, "Henry", 80000, 2], 
                              [4, "Sam", 60000, 2], 
                              [5, "Max", 90000, 1]
                          ], 
              "Department": [ [1, "IT"], [2, "Sales"] ]
            }
}
我正在尝试将json对象的
$行
下找到的值插入
员工
部门
表中。我把示例表放在下面。我正在使用SQLServerExpress

我尝试过使用
JSON\u QUERY
OPEN\u JSON
都没有成功

雇员:

+----+-------+--------+--------------+
| Id | Name  | Salary | DepartmentId |
+----+-------+--------+--------------+
| 1  | Joe   | 70000  | 1            |
| 2  | Jim   | 90000  | 1            |
| 3  | Henry | 80000  | 2            |
| 4  | Sam   | 60000  | 2            |
| 5  | Max   | 90000  | 1            |
+----+-------+--------+--------------+
部门:

+----+----------+
| Id | Name     |
+----+----------+
| 1  | IT       |
| 2  | Sales    |
+----+----------+
一种方法是with,指定实体的路径,并使用
with
子句提取每个数组项的值

INSERT INTO dbo.Employee (
     ID
    ,Name
    ,Salary
    ,DepartmentId
)
SELECT
     ID
    ,Name
    ,Salary
    ,DepartmentId
FROM OPENJSON(@json, '$.rows.Employee')
WITH (
     Id             int         '$[0]'
    ,Name           varchar(50) '$[1]'
    ,Salary         int         '$[2]'
    ,DepartmentId   int         '$[3]'
);

INSERT INTO dbo.Department (
     ID
    ,Name
)
SELECT
    ID
    ,Name
FROM OPENJSON(@json, '$.rows.Department')
WITH (
     Id             int         '$[0]'
    ,Name           varchar(50) '$[1]'
);

根据问题指南,请说明您尝试了什么,并告诉我们您(在本网站或其他地方)发现了什么,以及为什么它不能满足您的需求。