我有一个SQLServer数据库,当我导入一个浮点类型时,它导入了一个不正确的值:
DB值:9.0
ES值:90.0
DB值:16.00
ES值:16000000000000004
我已经为值设置了一个浮点类型的映射,并在river config中设置了scale:2参数,但没有成功。
最佳答案
我的猜测是,沿该行的某个位置将值解析为字符串并以错误的区域性设置了格式。例如。如果您的小数点是逗号,那么一个点(大多数情况下)将是千位分隔符,并且将被忽略:
PS> Get-Culture
LCID Name DisplayName
---- ---- -----------
1031 de-DE German (Germany)
PS> [double]::Parse('9.0')
90
而16似乎并不完全是16,这就是为什么您会得到这么多的数字的原因。
最简单的解决方法是更改服务器或计算机上的语言环境。另一个选择是弄清楚这是代码中的错误还是框架的错误。通常,在格式化或解析供机器使用的数字时始终指定区域性(例如.NET中的不变区域性或C中的C语言环境)属于常识,但许多应用程序也都犯了错误。
关于elasticsearch - ElasticSearch中来自sqlserver jdbc river的奇怪 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15741653/