【问题标题】:SQL - Parse JSON Array without column headersSQL - 解析没有列标题的 JSON 数组
【发布时间】:2020-04-03 19:50:56
【问题描述】:

我有以下 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", "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

【问题讨论】:

    标签: sql json tsql sql-server-2016


    【解决方案1】:

    您需要将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]'
    )
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多