批量插入错误数据

时间:2018-10-17 20:04:16

标签: sql sql-server validation bulkinsert

我正在尝试为我的公司建立一个自动化的数据工作流,每个星期一将数据插入数据库(Microsoft sql server)中。

“批量插入”语句将逐行插入数据。但是,如果在中间找到错误的数据,它将停止该过程,并且不会取出插入的数据。

有什么方法可以首先验证数据,以便在验证数据可以插入之前不会开始插入?

谢谢!

2 个答案:

答案 0 :(得分:0)

在插入之前验证每一行是一种方法。 但是,当您插入时,仍然可能发生错误。 因此,您可以考虑交易。整个插入在一笔交易中。 任何行插入都会失败。数据库将全部回滚。 与交易。您不需要先进行验证。

答案 1 :(得分:0)

  

...如果在中间找到错误的数据,它将停止该过程,并且不会取出插入的数据。

使用与交易目的完全相同的交易(作为交易的一部分回滚或提交多个操作

  

General Remarks

     

可以在用户定义的事务中执行BULK INSERT语句,以将数据导入表或视图中。 (可选)要对批量导入数据使用多个匹配项,事务可以在BULK INSERT语句中指定BATCHSIZE子句。如果回滚多批次事务,则该事务已发送到SQL Server的每个批次都会回滚。

示例:

BEGIN TRANSACTION TrnBlkInsert
BEGIN TRY
   -- your bulk insert here
   BULK INSERT .....

   COMMIT TRANSACTION TrnBlkInsert
END TRY
BEGIN CATCH
   ROLLBACK TRANSACTION TrnBlkInsert;
   THROW;
END CATCH