如何将json对象转换为2个sql表?
我有一个JSON对象,如下所示:如何将json对象转换为2个sql表?,sql,json,sql-server,tsql,Sql,Json,Sql Server,Tsql,我有一个JSON对象,如下所示: { "headers": { "Employee": [ "Id", "Name", "Salary", "DepartmentId"], "Department": ["Id", "Name"] },
{
"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]'
);
根据问题指南,请说明您尝试了什么,并告诉我们您(在本网站或其他地方)发现了什么,以及为什么它不能满足您的需求。