SQL-解析不带列标题的JSON数组
我有以下json负载:SQL-解析不带列标题的JSON数组,sql,json,tsql,sql-server-2016,Sql,Json,Tsql,Sql Server 2016,我有以下json负载: "rows": [["202003290528", "/home", "/home", "(not set)", "/home", "desktop", "Charlotte NC", "1", "1", "1", "0.0", "1", "1", "0.0", "1"], ["202003291516", "/home", "/home", "(not set)", "/home", "mobile", "Chicago IL", "1", "1", "1", "0.0
"rows": [["202003290528", "/home", "/home", "(not set)", "/home", "desktop", "Charlotte NC", "1", "1", "1", "0.0", "1", "1", "0.0", "1"], ["202003291516", "/home", "/home", "(not set)", "/home", "mobile", "Chicago IL", "1", "1", "1", "0.0", "1", "0", "0.0", "1"], ["202003291930", "/home", "/home", "(not set)", "/home", "mobile", "Boston MA-Manchester NH", "1", "1", "1", "0.0", "1", "0", "0.0", "1"], ["202003291942", "/home", "/home", "(not set)", "/home", "mobile", "Des Moines-Ames IA", "1", "1", "1", "0.0", "1", "0", "0.0", "1"]]
如何使用SQL Server 2016解析此数据以填充SQL表:
dateHourMinute pagePath landingPagePath secondPagePath exitPagePath deviceCategory metro sessions pageviews uniquePageviews timeOnPage users newUsers sessionDuration bounces
您需要对显式模式使用
OPENJSON()
。只需在WITH
子句中使用适当的列名:
声明:
DECLARE @json nvarchar(max) = N'{
"rows":[
[
"202003290528",
"/home",
"/home",
"(not set)",
"/home",
"desktop",
"Charlotte NC",
"1",
"1",
"1",
"0.0",
"1",
"1",
"0.0",
"1"
],
[
"202003291516",
"/home",
"/home",
"(not set)",
"/home",
"mobile",
"Chicago IL",
"1",
"1",
"1",
"0.0",
"1",
"0",
"0.0",
"1"
],
[
"202003291930",
"/home",
"/home",
"(not set)",
"/home",
"mobile",
"Boston MA-Manchester NH",
"1",
"1",
"1",
"0.0",
"1",
"0",
"0.0",
"1"
],
[
"202003291942",
"/home",
"/home",
"(not set)",
"/home",
"mobile",
"Des Moines-Ames IA",
"1",
"1",
"1",
"0.0",
"1",
"0",
"0.0",
"1"
]
]
}'
SELECT *
FROM OPENJSON(@json, '$.rows') WITH (
dateHourMinute varchar(100) '$[0]',
pagePath varchar(100) '$[1]',
landingPagePath varchar(100) '$[2]',
secondPagePath varchar(100) '$[3]',
exitPagePath varchar(100) '$[4]',
deviceCategory varchar(100) '$[5]',
metro varchar(100) '$[6]',
sessions varchar(100) '$[7]',
pageviews varchar(100) '$[8]',
uniquePageviews varchar(100) '$[9]',
timeOnPage varchar(100) '$[10]',
users varchar(100) '$[11]',
newUsers varchar(100) '$[12]',
sessionDuration varchar(100) '$[13]',
bounces varchar(100) '$[14]'
)
声明:
DECLARE @json nvarchar(max) = N'{
"rows":[
[
"202003290528",
"/home",
"/home",
"(not set)",
"/home",
"desktop",
"Charlotte NC",
"1",
"1",
"1",
"0.0",
"1",
"1",
"0.0",
"1"
],
[
"202003291516",
"/home",
"/home",
"(not set)",
"/home",
"mobile",
"Chicago IL",
"1",
"1",
"1",
"0.0",
"1",
"0",
"0.0",
"1"
],
[
"202003291930",
"/home",
"/home",
"(not set)",
"/home",
"mobile",
"Boston MA-Manchester NH",
"1",
"1",
"1",
"0.0",
"1",
"0",
"0.0",
"1"
],
[
"202003291942",
"/home",
"/home",
"(not set)",
"/home",
"mobile",
"Des Moines-Ames IA",
"1",
"1",
"1",
"0.0",
"1",
"0",
"0.0",
"1"
]
]
}'
SELECT *
FROM OPENJSON(@json, '$.rows') WITH (
dateHourMinute varchar(100) '$[0]',
pagePath varchar(100) '$[1]',
landingPagePath varchar(100) '$[2]',
secondPagePath varchar(100) '$[3]',
exitPagePath varchar(100) '$[4]',
deviceCategory varchar(100) '$[5]',
metro varchar(100) '$[6]',
sessions varchar(100) '$[7]',
pageviews varchar(100) '$[8]',
uniquePageviews varchar(100) '$[9]',
timeOnPage varchar(100) '$[10]',
users varchar(100) '$[11]',
newUsers varchar(100) '$[12]',
sessionDuration varchar(100) '$[13]',
bounces varchar(100) '$[14]'
)