Sql server 当数值超出范围错误出现10次时,BCP文件未完全加载

Sql server 当数值超出范围错误出现10次时,BCP文件未完全加载,sql-server,bcp,Sql Server,Bcp,我正在尝试将以制表符分隔的文件导入SQL。DB中的一个字段是十进制(15,2)。但是我收到的文件可能有一些指数值,如-2.702159776E17,这显然不适合我在DB中的字段 问题是,如果该指数文件的记录超过10条,则BCP没有加载完整的数据。一旦遇到指数值的第10个实例,它就会跳过文件的其余部分 我正在使用以下BCP命令加载数据: dbname.dbo.tablename in "filelocation" -c -F 2 -b 10000 -h "TABLOCK" -T -S server

我正在尝试将以制表符分隔的文件导入SQL。DB中的一个字段是
十进制(15,2)
。但是我收到的文件可能有一些指数值,如
-2.702159776E17
,这显然不适合我在DB中的字段

问题是,如果该指数文件的记录超过10条,则BCP没有加载完整的数据。一旦遇到指数值的第10个实例,它就会跳过文件的其余部分

我正在使用以下BCP命令加载数据:

dbname.dbo.tablename in "filelocation" -c -F 2 -b 10000 -h "TABLOCK" -T -S servername
我试图导入的文件有200000条记录。但我们可以清楚地看到,它只处理了18000条记录,其余的都被跳过了。BCP的输出如下所示

Starting copy...
SQLState = 22003, NativeError = 0
Error = [Microsoft][SQL Server Native Client 11.0]Numeric value out of range
SQLState = 22003, NativeError = 0
Error = [Microsoft][SQL Server Native Client 11.0]Numeric value out of range
SQLState = 22003, NativeError = 0
Error = [Microsoft][SQL Server Native Client 11.0]Numeric value out of range
SQLState = 22003, NativeError = 0
Error = [Microsoft][SQL Server Native Client 11.0]Numeric value out of range
SQLState = 22003, NativeError = 0
Error = [Microsoft][SQL Server Native Client 11.0]Numeric value out of range
SQLState = 22003, NativeError = 0
Error = [Microsoft][SQL Server Native Client 11.0]Numeric value out of range
SQLState = 22003, NativeError = 0
Error = [Microsoft][SQL Server Native Client 11.0]Numeric value out of range
SQLState = 22003, NativeError = 0
Error = [Microsoft][SQL Server Native Client 11.0]Numeric value out of range
SQLState = 22003, NativeError = 0
Error = [Microsoft][SQL Server Native Client 11.0]Numeric value out of range
SQLState = 22003, NativeError = 0
Error = [Microsoft][SQL Server Native Client 11.0]Numeric value out of range

18149 rows copied.
Network packet size (bytes): 4096
Clock Time (ms.) Total     : 265    Average : (68486.79 rows per sec.)
研究以下方面:

-m max_errors指定在取消bcp操作之前可能发生的最大语法错误数。语法错误意味着 目标数据类型的数据转换错误。最大错误总数 排除只能在服务器上检测到的任何错误,例如 违反约束

bcp实用程序无法复制的行将被忽略并删除 算作一个错误。如果未包括此选项,则默认为 十,

您可以看到默认值是10个错误。如果要跳过所有错误,请指定此参数并提供非常大的值

如果要导入所有记录,可以将记录导入具有
FLOAT
数据类型而不是
DECIMAL(15,2)
的暂存表。然后,通过将浮点值转换为十进制值,将数据从暂存表复制到所需的表中。

查看以下内容:

-m max_errors指定在取消bcp操作之前可能发生的最大语法错误数。语法错误意味着 目标数据类型的数据转换错误。最大错误总数 排除只能在服务器上检测到的任何错误,例如 违反约束

bcp实用程序无法复制的行将被忽略并删除 算作一个错误。如果未包括此选项,则默认为 十,

您可以看到默认值是10个错误。如果要跳过所有错误,请指定此参数并提供非常大的值

如果要导入所有记录,可以将记录导入具有
FLOAT
数据类型而不是
DECIMAL(15,2)
的暂存表。然后,通过将浮点值转换为十进制值,将数据从暂存表复制到您想要数据的表中