您可以下载Google搜索,它们以多个JSON文件的形式出现.我正在尝试使用SQL函数OPENJSON将它们解析为[TimeStamp]和[Query Text]列
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'
)
Run Code Online (Sandbox Code Playgroud)
查询文本返回结果,但时间戳只读取NULL.我究竟做错了什么?
您的代码中存在小故障.
示例Json
{
"event": [{
"query": {
"id": [{
"timestamp_usec": "1506676658"
}],
"query_text": "download google searches"
}
}]
}
Run Code Online (Sandbox Code Playgroud)
如果你拿样本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'
)
Run Code Online (Sandbox Code Playgroud)