如何将 json 数据转换为记录并插入到 sql 服务器中使用
How to convert json data to records and insert into a using in sql server
我是 sqlserver 新手。我想将 json 数据转换成记录并插入到 table 中。
我有 json 数据,例如
{
"HEADER":[
{
"seq_id":343,
"max_processed_scn":649044274,
"time_processed":"13-MAR-19 09.03.23.081055 PM",
"status":"COMPLETED"
},
{
"seq_id":344,
"max_processed_scn":649214903,
"time_processed":"15-MAR-19 12.49.31.606172 PM",
"status":"COMPLETED"
}
],
"DETAIL":[
{
"seq_id":11215,
"event_id":1,
"caller_seq":343,
"event_description":"BEGIN.."
},
{
"seq_id":11216,
"event_id":2,
"caller_seq":343,
"event_description":"STARTING"
},
{
"seq_id":11217,
"event_id":2,
"caller_seq":343,
"event_description":"STARTED "
} "event_description":"TOTAL"
]
}
所以我想将数组 "header" 插入一个 table 并将另一个数组 "Detail" 插入 another.Can 任何人都可以帮助我实现这一目标。提前致谢
所以我需要详细的 table 数据,例如
seq_id max_processed_scn time_processed status
343 649044274 13-MAR-19 09.03.23.081055 PM COMPLETED
344 649214903 15-MAR-19 12.49.31.606172 PM COMPLETED
我使用了这个查询:
DECLARE @json NVARCHAR(MAX)
SET @json =
N'[{
"HEADER":[
{
"seq_id":343,
"max_processed_scn":649044274,
"time_processed":"13-MAR-19 09.03.23.081055 PM",
"status":"COMPLETED"
},
{
"seq_id":344,
"max_processed_scn":649214903,
"time_processed":"15-MAR-19 12.49.31.606172 PM",
"status":"COMPLETED"
}
],
"DETAIL":[
{
"seq_id":11215,
"event_id":1,
"caller_seq":343,
"event_description":"BEGIN.."
},
{
"seq_id":11216,
"event_id":2,
"caller_seq":343,
"event_description":"STARTING"
},
{
"seq_id":11217,
"event_id":2,
"caller_seq":343,
"event_description":"STARTED "
} "event_description":"TOTAL"
]
}
]'
SELECT *
FROM OPENJSON(@json, '$.HEADER')
WITH (seq_id INT, max_processed_scn INT, time_processed NVARCHAR(100), [status] NVARCHAR(100))
您可以在 sql 服务器 2016 及更高版本中使用以下查询来读取 Json 数据并插入所需的表中
示例数据
declare @json varchar(max) =' {
"HEADER":[
{
"seq_id":343,
"max_processed_scn":649044274,
"time_processed":"13-MAR-19 09.03.23.081055 PM",
"status":"COMPLETED"
},
{
"seq_id":344,
"max_processed_scn":649214903,
"time_processed":"15-MAR-19 12.49.31.606172 PM",
"status":"COMPLETED"
}
],
"DETAIL":[
{
"seq_id":11215,
"event_id":1,
"caller_seq":343,
"event_description":"BEGIN.."
},
{
"seq_id":11216,
"event_id":2,
"caller_seq":343,
"event_description":"STARTING"
},
{
"seq_id":11217,
"event_id":2,
"caller_seq":343,
"event_description":"STARTED "
}
]
}
'
查询到selectHeader数据
SELECT * FROM OPENJSON(@json, '$.HEADER') WITH (seq_id INT, max_processed_scn INT, time_processed NVARCHAR(50), [status] NVARCHAR(50))
查询到select明细数据
SELECT * FROM OPENJSON(@json, '$.DETAIL') WITH (seq_id INT, event_id INT, caller_seq int, event_description NVARCHAR(255))
我是 sqlserver 新手。我想将 json 数据转换成记录并插入到 table 中。 我有 json 数据,例如
{
"HEADER":[
{
"seq_id":343,
"max_processed_scn":649044274,
"time_processed":"13-MAR-19 09.03.23.081055 PM",
"status":"COMPLETED"
},
{
"seq_id":344,
"max_processed_scn":649214903,
"time_processed":"15-MAR-19 12.49.31.606172 PM",
"status":"COMPLETED"
}
],
"DETAIL":[
{
"seq_id":11215,
"event_id":1,
"caller_seq":343,
"event_description":"BEGIN.."
},
{
"seq_id":11216,
"event_id":2,
"caller_seq":343,
"event_description":"STARTING"
},
{
"seq_id":11217,
"event_id":2,
"caller_seq":343,
"event_description":"STARTED "
} "event_description":"TOTAL"
]
}
所以我想将数组 "header" 插入一个 table 并将另一个数组 "Detail" 插入 another.Can 任何人都可以帮助我实现这一目标。提前致谢
所以我需要详细的 table 数据,例如
seq_id max_processed_scn time_processed status
343 649044274 13-MAR-19 09.03.23.081055 PM COMPLETED
344 649214903 15-MAR-19 12.49.31.606172 PM COMPLETED
我使用了这个查询:
DECLARE @json NVARCHAR(MAX)
SET @json =
N'[{
"HEADER":[
{
"seq_id":343,
"max_processed_scn":649044274,
"time_processed":"13-MAR-19 09.03.23.081055 PM",
"status":"COMPLETED"
},
{
"seq_id":344,
"max_processed_scn":649214903,
"time_processed":"15-MAR-19 12.49.31.606172 PM",
"status":"COMPLETED"
}
],
"DETAIL":[
{
"seq_id":11215,
"event_id":1,
"caller_seq":343,
"event_description":"BEGIN.."
},
{
"seq_id":11216,
"event_id":2,
"caller_seq":343,
"event_description":"STARTING"
},
{
"seq_id":11217,
"event_id":2,
"caller_seq":343,
"event_description":"STARTED "
} "event_description":"TOTAL"
]
}
]'
SELECT *
FROM OPENJSON(@json, '$.HEADER')
WITH (seq_id INT, max_processed_scn INT, time_processed NVARCHAR(100), [status] NVARCHAR(100))
您可以在 sql 服务器 2016 及更高版本中使用以下查询来读取 Json 数据并插入所需的表中
示例数据
declare @json varchar(max) =' {
"HEADER":[
{
"seq_id":343,
"max_processed_scn":649044274,
"time_processed":"13-MAR-19 09.03.23.081055 PM",
"status":"COMPLETED"
},
{
"seq_id":344,
"max_processed_scn":649214903,
"time_processed":"15-MAR-19 12.49.31.606172 PM",
"status":"COMPLETED"
}
],
"DETAIL":[
{
"seq_id":11215,
"event_id":1,
"caller_seq":343,
"event_description":"BEGIN.."
},
{
"seq_id":11216,
"event_id":2,
"caller_seq":343,
"event_description":"STARTING"
},
{
"seq_id":11217,
"event_id":2,
"caller_seq":343,
"event_description":"STARTED "
}
]
}
'
查询到selectHeader数据
SELECT * FROM OPENJSON(@json, '$.HEADER') WITH (seq_id INT, max_processed_scn INT, time_processed NVARCHAR(50), [status] NVARCHAR(50))
查询到select明细数据
SELECT * FROM OPENJSON(@json, '$.DETAIL') WITH (seq_id INT, event_id INT, caller_seq int, event_description NVARCHAR(255))