我有一个包含股票信息的文件,例如股票代码和股票价格。使用freebcp将文件加载到数据库表。文件中的股票价格格式如下:23.125。数据库表中的股票价格数据类型是[decimal](28,2)。 freebcp通过忽略最后一位数字将数据加载到表中没有任何问题:23.12被加载到记录的表列。我们现在使用Microsoft SQL Server的bcp实用程序(版本:11.0)来加载数据。但是我们现在遇到一个问题:bcp认为加载23.125到十进制(28.2)是一个错误(#@ Row 783,第23列:字符串数据,右截断@#)。它拒绝了记录。
我不想修改输入文件,因为文件中有很多列需要通过删除列的最后一位来修复。
有没有办法构建BCP或Microsoft SQL Server以进行正确的截断错误?
答案 0 :(得分:1)
当天的一个常见解决方法是将BCP转换为辅助/临时表,然后执行SELECT(columnlist)INTO基表,并进行必要的转换。另一个选项是Use the OPENROWSET Bulk Rowset Provider,然后您可以根据需要进行转换/转换。
答案 1 :(得分:0)
我今天遇到此错误,并通过在SQL Server版本15中使用-m参数来解决此问题
@Query(
value = "SELECT * " +
"FROM users " +
"where status = 'B' ",
nativeQuery = true
)
List<Users> usersStatCount();
参考:https://docs.microsoft.com/en-us/sql/tools/bcp-utility?view=sql-server-ver15#m
注意: -m选项也不适用于转换money或bigint数据类型。