我想将这些数据从Json文件插入到Sql表的多个表中,并使用它们的关系(外键)将所有数据链接到一个主表

我想将这些数据从Json文件插入到Sql表的多个表中,并使用它们的关系(外键)将所有数据链接到一个主表,sql,json,sql-server-2016-express,Sql,Json,Sql Server 2016 Express,数据库将具有链接到每个SQL级别的标识。还希望将所有三个表的数据合并到一个主表table_master中,该主表将具有基于内部元素记录id 2的最终数据数 预计将数据更新到SQL Server 2016的表中 使用外键的表结构 还有如何将相同的数据导出到共享网络驱动器文件夹中的Json中 复制代码: IF OBJECT_ID('dbo.Table1') IS NULL CREATE TABLE dbo.Table1 ( Name VARCHAR(100), Locati

数据库将具有链接到每个SQL级别的标识。还希望将所有三个表的数据合并到一个主表table_master中,该主表将具有基于内部元素记录id 2的最终数据数

预计将数据更新到SQL Server 2016的表中 使用外键的表结构 还有如何将相同的数据导出到共享网络驱动器文件夹中的Json中

复制代码:

IF OBJECT_ID('dbo.Table1') IS NULL
    CREATE TABLE dbo.Table1
    (
    Name VARCHAR(100), Location VARCHAR(100), Region VARCHAR(100) 
    )


DECLARE @MYJSON VARCHAR(1000)

SET @MYJSON = '
{
  "Name":"ABC",
  "Location":"East US",
  "Region":"West US",
  "Element":
 [
     {  
        "Name":"IE1",
        "Description":"IE1 Description",
        "Type":"Small",
        "InnerElement":
        [ 
           { "Key":"Name", "Value":"IME1"},
           {"Key":"AnotherProperty","Value":"Value1"}
        ]
     },
     {  
        "Name":"IE2",
        "Description":"IE2 Description",
        "Type":"Medium",
        "InnerElement":
        [ 
           {"Key":"Name","Value":"IME2"},
           {"Key":"Address","Value":"Xyz"}, 
           {"Key":"Type","Value":"Simple"},
           {"Key":"LastProperty","Value":"ValueX"}
        ]
     }
 ]}
 '

SELECT 
JSON_VALUE(@MYJSON,'$.Name') As Name,
JSON_VALUE(@MYJSON,'$.Location') As Location,
JSON_VALUE(@MYJSON,'$.Region') As Region

请看,我已经尝试过了,我的数据也正在导入,但数据库中插入的值正在变为null

Please 1。将数据表示为文本,而不是图片;2.标记您正在使用的实际数据库以及要使用的集成工具。3.显示您尝试过的内容请不要将代码作为图像发布。更多详情请参见此处:@Nick.McDermaid我无法解决此问题,我已参考以下解决方案,但无法实现我的期望。如果可能的话,你能帮我完成吗?我已经编辑了你的问题并添加了一些代码。您可以添加其他表创建定义和迄今为止实际尝试过的任何代码吗。这使我们能够快速复制/粘贴到我们的开发环境中以提供帮助。如果你不提供一个简单的起点,你就不太可能提供帮助。另外,没有repo意味着你没有尝试过任何东西。另外,请注意,在你提到的问题中,如果你包括了所有问题的createtable语句,那么回答第一条注释就方便多了tables@Nick.McDermaid请看我使用了上面的查询来获取数据。数据被插入为空。但我没有得到预期的结果。谢谢你,尼克,通过我上面的SQL代码,我得到了预期的结果。@Nick.McDermaid你能帮助我如何将多个Json文件读入SQL。Json文件列表在哪里?您只需重复使用上述内容并围绕它们循环即可。
USE JSON_CAT GO DECLARE @JsonObject NVARCHAR(MAX) 
SELECT @JsonObject=BulkColumn from  openrowset  (BULK 'C:\Users\uverma\Desktop\Test.Json, SINGLE_CLOB)T 
BEGIN TRANSACTION;
INSERT Table1([Name], [Location], [Region])
SELECT [Name], [Location], [Region]
FROM OPENJSON(@JsonObject, '$.InnerElement')
WITH (    [Name] VARCHAR(100),    [Location] VARCHAR(100),    [Region] VARCHAR(100));
DECLARE @Table1Id INT = SCOPE_IDENTITY();
DECLARE @Table3Input TABLE([Table2Id] INT, [InnerMostElement] NVARCHAR(MAX));
MERGE Table2
USING (    SELECT [Name], [Description], [Type], [InnerMostElement]    
FROM OPENJSON(@JsonObject, '$.InnerElement')    
WITH (        [Name] VARCHAR(100),        [Description] VARCHAR(100),        [Type] VARCHAR(100),        [InnerMostElement] NVARCHAR(MAX) AS JSON    )) AS J 
ON 1 = 0    
-- Always INSERT
WHEN NOT MATCHED THEN     
INSERT([Table1Id], [Name], [Description], [Type])    
VALUES (@Table1Id, J.[Name], J.[Description], J.[Type])    
OUTPUT inserted.Id, J.[InnerMostElement]    
INTO @Table3Input([Table2Id], [InnerMostElement]);  

INSERT Table3([Table2Id], [Key], [Value]) 
SELECT [Table2Id], KV.[Key], KV.[Value] 
FROM @Table3Input 
CROSS APPLY (    SELECT [Key], [Value]    
FROM OPENJSON([InnerMostElement])    
WITH (        [Key] VARCHAR(100),[Value] VARCHAR(100))) AS KV;

COMMIT;