一尘不染

发生异常时在Oracle中继续插入

sql

我正在将数据从旧版系统迁移到我们的新应用程序(在Oracle数据库10gR2上运行)。作为迁移的一部分,我正在研究一个脚本,该脚本将数据插入应用程序使用的表中。

导入的数据行数成千上万,并且源数据不是干净的(NOT
NULL列中的异常为空,等等)。因此,在通过脚本插入数据时,每当发生此类异常时,脚本就会突然结束,并且整个事务都会回滚。

有没有一种方法可以继续插入行干净的数据?使用NVL()COALESCE()不是选项,因为我想记录导致错误的行,以便下次通过时可以更正数据。

编辑:我当前的过程有一个异常处理程序,我正在记录导致错误的第一行。插入是否可以继续而不会终止,因为现在在第一个处理的异常上,该过程将终止执行。


阅读 216

收藏
2021-05-05

共1个答案

一尘不染

使用PLSQL,您可以在自己的事务中执行每个插入操作(每个操作之后执行COMMIT),并使用继续运行的异常处理程序记录或忽略错误。

2021-05-05