Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/dart/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server bcp for Linux在导入非常小的数据值时失败,例如“-1.28212683287E-308”_Sql Server - Fatal编程技术网

Sql server bcp for Linux在导入非常小的数据值时失败,例如“-1.28212683287E-308”

Sql server bcp for Linux在导入非常小的数据值时失败,例如“-1.28212683287E-308”,sql-server,Sql Server,使用Linux版本的bcp实用程序将数据导入SQL Server 2016。并且,对于其中一列中数据值非常小的数据行(如-1.28212683287E-308),导入失败 我们正在从Sybase ASE v12.5.1迁移到SQL Server 2016。此外,我们正在将一个现有的数据导入过程迁移到SQL Server 2016,该过程将大量数据从包含数百万行daa的数据文件加载到Sybase ASE 12.5.1系统上的数据库中 该过程目前在Sybase ASE上成功运行,没有问题,包括加载值

使用Linux版本的bcp实用程序将数据导入SQL Server 2016。并且,对于其中一列中数据值非常小的数据行(如-1.28212683287E-308),导入失败

我们正在从Sybase ASE v12.5.1迁移到SQL Server 2016。此外,我们正在将一个现有的数据导入过程迁移到SQL Server 2016,该过程将大量数据从包含数百万行daa的数据文件加载到Sybase ASE 12.5.1系统上的数据库中

该过程目前在Sybase ASE上成功运行,没有问题,包括加载值非常小的数据时,如-1.28212683287E-308

但是,将值非常小的数据(如-1.28212683287E-308)导入SQL Server 2016时,相同的过程失败


但是,使用Windows版本的Linux,使用非常小的数据值(如-1.28212683287E-308)执行相同的数据加载没有问题

以下是用于执行数据加载的bcp命令行:

/sales/mssql-tools/bin/bcp chireldatadb..xe_data in /logs/tmp/isql.sh_data_20191009_124320_ld-atl-syn0gs_43025.bcp -e /tmp/in.chireldatadb..xe_data.err -b 1000 -D -S LAMSQL1 -U ###### -P ###### -c -r '|\n' -t '\|'

使用Windows版本的Linux???我想你是指sql server的Windows版本吧?即使如此,该字符串在Windows上转换为0,我认为这是导致错误的原因。选择convertfloat53,'-1.28212683287E-308',您必须决定使用这些值实际希望发生什么-1.28212683287E-308太小,无法用SQL Server的浮点表示,因为它不支持非规范化值。如果接受,则必须四舍五入为0。最好的方法可能是确保您不依赖于bcp的哪个版本决定舍入以及为什么舍入,而是从一个视图进行复制,在这些不可表示的值进入导入之前将其舍入为0。如果您没有导入到浮动列中,这是bcp内部的问题。您会遇到什么错误?顺便说一句,就浮点范围而言,无论您是在Windows上使用SQL Server还是在Linux上使用SQL Server,行为都应该是相同的-区别应该只存在于bcp中,后者正在进行实际的数据加载。如果你发现了行为上的差异,MS可能会考虑需要修复的bug。他们可能认为BCP差异也是一个需要修复的错误,但如果是这样,它至少会是一个不太重要的一个。谢谢你的反应和捕捉。抱歉,我的意思是使用Windows版本的bcp键入,而不是使用Windows版本的Linux。其他一些信息: