Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 行中数据错误的大容量插入_Sql_Sql Server_Validation_Bulkinsert - Fatal编程技术网

Sql 行中数据错误的大容量插入

Sql 行中数据错误的大容量插入,sql,sql-server,validation,bulkinsert,Sql,Sql Server,Validation,Bulkinsert,我正试图为我的公司建立一个自动化的数据工作流程,每周一将数据插入数据库(microsoft sql server) “bulkinsert”语句将逐行插入数据。但是,如果在中间发现错误的数据,它将停止该过程,并且不会取出插入的数据。 我们是否可以先验证数据,以便在验证数据是否干净后才能开始插入 谢谢大家! 插入前验证每一行是一种方法。 但当您插入时,仍然可能发生错误。 所以,你可以考虑交易。整个insert在一个事务中完成。 任何行插入都失败。数据库将回滚所有。 有交易。之前不需要验证 。。。如

我正试图为我的公司建立一个自动化的数据工作流程,每周一将数据插入数据库(microsoft sql server)

“bulkinsert”语句将逐行插入数据。但是,如果在中间发现错误的数据,它将停止该过程,并且不会取出插入的数据。 我们是否可以先验证数据,以便在验证数据是否干净后才能开始插入


谢谢大家!

插入前验证每一行是一种方法。 但当您插入时,仍然可能发生错误。 所以,你可以考虑交易。整个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

这是一个非常广泛的问题,很可能会结束。首先,您没有提供任何关于数据格式的信息,或者“验证”的含义。FWIW,我会编写一个简单的powershell脚本来进行验证,或者使用SSI来读取文件,验证它,然后让它在验证通过后进行批量插入。我认为下面的评论提到了“事务”,我相信这正是我现在需要的!对每一行进行验证也是一个好主意,我将在以后对此进行研究。谢谢是的!非常感谢你!我会看更多关于“交易”的信息谢谢你的回答!这就是我所需要的!!