当前位置: 首页 > 面试题库 >

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

吕作人
2023-03-14
问题内容

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

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

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

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


问题答案:

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



 类似资料:
  • 问题内容: 我正在尝试引发异常(不使用try catch块),并且程序在引发异常后立即完成。有没有一种方法可以在我引发异常之后继续执行程序?我抛出了在另一个类中定义的InvalidEmployeeTypeException,但是我希望程序在抛出该异常后继续执行。 问题答案: 试试这个:

  • 在我的spring boot应用程序中,我试图进行批插入以提高写入性能。问题是,我定期获得重复数据,对于这些数据,我的表上有一些唯一的约束。在进行串行插入时,我只捕获DataIntegrityException并忽略它们。但在执行批插入时,即使一次插入失败,也不会保存整个批。我希望hibernate仍然保存不会抛出错误的记录。我正在使用存储库。saveAll()用于插入,我的数据库是Mysql

  • 我在PostgreSQL中有一个表,它有许多记录和唯一的键 然后我从Excel导入数据并将其映射到列表。最后,我有一些像 包裹包含大约20,000条记录,并且可以包含违反唯一约束的记录。在这种情况下,我需要跳过该记录并继续插入。 现在我得到了一个预期的错误 微软EntityFrameworkCore。DbUpdateException:更新条目时出错。有关详细信息,请参见内部异常--- 如何忽略它

  • 问题内容: 我有这段代码。我想回到循环的起点,并再次要求用户输入。但是,它总是循环而不停止请求输入。我的代码有什么问题?谢谢 问题答案: 从http://docs.oracle.com/javase/7/docs/api/java/util/Scanner.html#nextInt%28int%29: “如果翻译成功,则扫描程序将前进经过匹配的输入。” 啊,但是如果翻译是什么 不是 成功的?在这种

  • 这是我的问题。 我在犯错误。 Java语言lang.IllegalArgumentException:在EntityManager中创建查询时发生异常:异常描述:语法错误分析查询[select sum(u.expenseAmount),u.wdExpenseGroup.expenseGroupName from WdExpense u其中MONTH(CAST(u.expenseDate as da

  • 问题内容: 我的代码中有一个try … except块,当抛出异常时。我真的只想继续编写代码,因为在这种情况下,所有内容仍然可以正常运行。问题是,如果您将except:块保留为空或不执行任何操作,则会出现语法错误。我不能使用continue,因为它不在循环中。我可以使用一个关键字来告诉代码继续运行吗? 问题答案: except Exception: pass 适用于pass语句的Python文档