json - 将 JSON 数据导入 SQL Server;失去小数精度和比例
问题描述
我正在导入一组 JSON 文档,如下所示:
{
"_id": {
"$oid": "6092e24247f3024d478902c2"
},
"startSearch": "2021-05-05T18:20:50.132Z",
"Inst_ID": 856,
"hostname": "localhost",
"searchpath": "/Account/Main/_LookupOptimize",
"Params": {
"AccountStatusDisplay": [
"Active",
"Out For Repo",
"Repossessed"
]
},
"endSearch": "2021-05-05T18:20:53.993Z",
"elapsedTime": 3.861,
"totalRecordsFound": 1988
}
我将它们导入到 SQL Server 2019 的本地实例中,如下所示:
Declare @JSON nvarchar(max)
SELECT @JSON=BulkColumn
FROM OPENROWSET (BULK 'C:\temp\QueueSearch.JSON', SINGLE_CLOB) import
INSERT INTO myJSON
SELECT *
FROM OPENJSON (@JSON)
WITH
(
[_id] nvarchar(max),
[startSearch] datetime,
[Inst_ID] int,
[hostname] nvarchar(80),
[searchpath] nvarchar(50),
[Params] nvarchar(max),
[endSearch] datetime,
[elapsedTime] NUMERIC(10,4),
[totalRecordsFound] int
)
我的问题是 elapsedTime 值被四舍五入为整数。(_id 值也没有被导入,但首先要做的事情。)我可能遗漏了一些非常简单的东西,但我怎样才能保持我的 elapsedTime 值的准确性?提前致谢!
解决方案
验证 elapsedTime 的数据类型是numeric(10,4)
并显式映射 INSERT 中的列,以确保您elapsedTime
从 JSON 插入到elapsedTime
列中。
INSERT INTO myJSON([_id],startSearch,Inst_ID,hostname,searchpath,Params,endSearch,elapsedTime,totalRecordsFound)
SELECT *
FROM OPENJSON (@JSON)
WITH
(
[_id] nvarchar(max),
[startSearch] datetime,
[Inst_ID] int,
[hostname] nvarchar(80),
[searchpath] nvarchar(50),
[Params] nvarchar(max),
[endSearch] datetime,
[elapsedTime] NUMERIC(10,4),
[totalRecordsFound] int
)
推荐阅读
- python - 如何合并(加入)熊猫中每列具有不同值的两行?
- python - 在 Python 中使用 Websocket 连续发送数据并打开连接
- bridge.net - Bridge.net 是否仍在积极开发中
- spring - 如何设置 Spring Admin Server 将用于健康检查的路径?
- record - OMNeT++ 不记录结果
- python - 如何使用 Django OMR 查询集更新表的 las 行?
- windows - 如何以当前登录的 Windows 用户身份从 Go 向 AD 进行身份验证?
- python - 按包含来自列表的子字符串的字段过滤 sqlalchemy 查询
- java - 如何使用 Swing 制作单个可调整大小的列?
- python - 如何对 Pandas 列中的每个唯一值进行排序和计数