Sql 行中数据错误的大容量插入
我正试图为我的公司建立一个自动化的数据工作流程,每周一将数据插入数据库(microsoft sql server) “bulkinsert”语句将逐行插入数据。但是,如果在中间发现错误的数据,它将停止该过程,并且不会取出插入的数据。 我们是否可以先验证数据,以便在验证数据是否干净后才能开始插入Sql 行中数据错误的大容量插入,sql,sql-server,validation,bulkinsert,Sql,Sql Server,Validation,Bulkinsert,我正试图为我的公司建立一个自动化的数据工作流程,每周一将数据插入数据库(microsoft sql server) “bulkinsert”语句将逐行插入数据。但是,如果在中间发现错误的数据,它将停止该过程,并且不会取出插入的数据。 我们是否可以先验证数据,以便在验证数据是否干净后才能开始插入 谢谢大家! 插入前验证每一行是一种方法。 但当您插入时,仍然可能发生错误。 所以,你可以考虑交易。整个insert在一个事务中完成。 任何行插入都失败。数据库将回滚所有。 有交易。之前不需要验证 。。。如
谢谢大家! 插入前验证每一行是一种方法。 但当您插入时,仍然可能发生错误。 所以,你可以考虑交易。整个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来读取文件,验证它,然后让它在验证通过后进行批量插入。我认为下面的评论提到了“事务”,我相信这正是我现在需要的!对每一行进行验证也是一个好主意,我将在以后对此进行研究。谢谢是的!非常感谢你!我会看更多关于“交易”的信息谢谢你的回答!这就是我所需要的!!