过去两天我在互联网上搜索没有成功,所以这里不情愿地向Stack Overflow的好人提出第一个问题。
我正在尝试将JSON数据转换为SQL Server(2016)表,但数据包含没有键的数组。 JSON看起来像这样:
db.RSS.find().limit(6).sort({$natural:-1}).pretty()
我可以得到下表:
[
{
"year": 2016,
"month": 1,
"day": 1,
"breakdownTotal": [
"283082",
"601184",
"140120"
]
},
{
"year": 2016,
"month": 1,
"day": 2,
"breakdownTotal": [
"354725",
"760532",
"177279"
]
}
]
但理想情况下我希望:
year month day
2016 1 1
2016 1 2
虽然可以做一些事情:
year month day breakdown1 breakdown2 breakdown3
2016 1 1 283082 601184 140120
2016 1 2 354725 760532 177279
这与此链接顶部的示例数据类似: [https://msdn.microsoft.com/en-gb/library/dn921897.aspx][1] [1]:https://msdn.microsoft.com/en-gb/library/dn921897.aspx虽然无益,但没有提到如何提取信息。
有没有人对如何达到预期效果有任何提示?任何帮助将不胜感激。
罗布
答案 0 :(得分:1)
试试这个(感谢评论中的@Danieboy the link):
DECLARE @json NVARCHAR(MAX)
SET @json='-paste your json here-';
SELECT *
FROM OPENJSON(@json)
WITH (
[year] int '$.year'
,[month] int '$.month'
,[day] int '$.day'
,[breakdown1] bigint '$.breakdownTotal[0]'
,[breakdown2] bigint '$.breakdownTotal[1]'
,[breakdown3] bigint '$.breakdownTotal[2]'
)
;
可悲的是,我没有SQL 2016,因此无法测试。