sql错误数限制问题

iericren 2018-07-31 10:18:08
insert into [dbo].[test] (id,name)select Col1,Col2 from openrowset (bulk 'D:\\test.txt', formatfile='D:\\test_format.xml') as t1
数据里特意弄了几千条存在字段类型问题的数据,执行后报错如下:
第 21 行、第 1 列(Col1)出现大容量加载数据转换错误(类型不匹配或者字符对于指定的代码页无效)。
消息 4865,级别 16,状态 1,第 1 行
由于超过了最大错误数(10),无法进行大容量加载。
消息 7399,级别 16,状态 1,第 1 行
链接服务器 "(null)" 的 OLE DB 访问接口 "BULK" 报错。提供程序未给出有关错误的任何信息。
消息 7330,级别 16,状态 2,第 1 行
无法从链接服务器 "(null)" 的 OLE DB 访问接口"BULK"提取行。

我希望能把所有的错误都报出来,但现在报到第10个错误就停止了,请问有谁知道如何才能把所有的错误都报出来吗?
...全文
194 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
听雨停了 2018-07-31
  • 打赏
  • 举报
回复
比如说你的表test中的id为int类型,name为varchar类型,但是实际你的文件中的id可能会存在也是字符,导致读取后插入的时候出现问题。
大概可以用游标这样做,不过可能会比较慢。
首先建个临时表#test,包含自增长列num,和id,name,这时候id和name都为字符类型。这样的话你的文件数据就可以正常的读取进来。然后用游标一条一条记录的把临时表中的id,name插入到正常的表test中,这时候如果#test表中的id为字符的话就会出现报错,这时候你把错误 print出来,错误忽略掉,游标继续下一条记录。这样下来,所有有问题的行就都可以知道了。

22,210

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧