Sql server 大容量插入MAXERRORS

Sql server 大容量插入MAXERRORS,sql-server,bulkinsert,bulk-load,Sql Server,Bulkinsert,Bulk Load,是否有任何方法可以使用大容量插入语句并禁用MAXERRORS 我希望允许出现无限多的错误,因为在我批量插入的文件中,错误的数量可能很高(我无法控制此文件,目前正在与供应商合作解决某些行上的问题) 如果没有办法禁用它,MAXERRORS可以处理的最大数量是多少?是2147483647吗?通常,当我从外部源导入数据时,我非常小心数据中的问题。SQLServer提供了几种解决方案。许多人使用SSI。我避免使用SSI。其中一个原因是让它打开一个用户已经打开的Excel文件。它还有其他一些缺点 在任何情况

是否有任何方法可以使用大容量插入语句并禁用MAXERRORS

我希望允许出现无限多的错误,因为在我批量插入的文件中,错误的数量可能很高(我无法控制此文件,目前正在与供应商合作解决某些行上的问题)


如果没有办法禁用它,MAXERRORS可以处理的最大数量是多少?是2147483647吗?

通常,当我从外部源导入数据时,我非常小心数据中的问题。SQLServer提供了几种解决方案。许多人使用SSI。我避免使用SSI。其中一个原因是让它打开一个用户已经打开的Excel文件。它还有其他一些缺点

在任何情况下,一旦数据位于文本文件中,我将创建一个暂存表,其中包含原始表的所有列,数据类型为
varchar(8000)
。这往往是大于必要的,但应该是足够的

然后,我创建了一个具有适当列的表,并使用如下方式填充它:

insert into RealTable (CharColumn, IntColumn, FloatColumn, DateTimeColumn)
    select CharColumn,
           (case when isnumeric(IntColumn) = 1 and IntColumn not like '%.%' then cast(IntColumn as int end),
           (case when isnumeric(FloatColumn) = 1 then cast(FloatColumn as float) end),
           (case when isdate(DateColumn) = 1 then cast(DzteColumn as date)
    from StagingTable st
也就是说,我在SQL代码中执行类型检查,使用
case
语句来避免错误。当类型不匹配时,结果为空值。然后,我可以使用StagingTable调查数据库中的值,以了解任何问题

此外,在RealTable中,我始终有以下列:

  • RealTableId整数标识(1,1)
  • CreatedBy varchar(255)默认系统用户
  • CreatedAt日期时间默认getdate()

这些提供了有关数据的跟踪信息,这些信息通常非常有用。

通常,错误是类型转换错误。我首先将数据放入一个所有字符的暂存表中,然后作为一个单独的步骤进行转换。十亿真的还不够大吗?你能提供一个链接到一个好的资源来学习暂存表吗?您是否将外部文件中的数据带入其中?这非常有用。谢谢你的帮助。