Sql server 当数值超出范围错误出现10次时,BCP文件未完全加载
我正在尝试将以制表符分隔的文件导入SQL。DB中的一个字段是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
十进制(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)
的暂存表。然后,通过将浮点值转换为十进制值,将数据从暂存表复制到您想要数据的表中