您可以下载Google搜索,它们以多个JSON文件的形式出现。我正在尝试使用SQL函数OPENJSON将它们解析为[TimeStamp]和[Query Text]列[/ p>
DECLARE @json as nvarchar(max)
SET @json = N'{"event":[{"query":{"id":[{"timestamp_usec":"1329003091748889"}],"query_text":"download google searches"}}]}'
SELECT * FROM OPENJSON(@json, N'$.event')
WITH (
[TimeStamp] nvarchar(max) N'$.query.timestamp_usec' ,
[QueryText] nvarchar(max) N'$.query.query_text'
)
查询文本返回结果,但时间戳只读取NULL。我做错了什么?
答案 0 :(得分:7)
您的代码中存在小故障。
示例Json
{
"event": [{
"query": {
"id": [{
"timestamp_usec": "1506676658"
}],
"query_text": "download google searches"
}
}]
}
如果您采样json timestamp_usec 位于 id 数组内,那么为了从中获取数据,您需要对查询进行一些小修改,如下所示
DECLARE @json as nvarchar(max)
SET @json = N'{"event":[{"query":{"id":[{"timestamp_usec":"1506676658"}],"query_text":"download google searches"}}]}'
SELECT * FROM OPENJSON(@json, N'$.event')
WITH (
[TimeStamp] nvarchar(max) N'$.query.id[0].timestamp_usec' ,
[QueryText] nvarchar(max) N'$.query.query_text'
)