批量执行时如何查找失败的sql语句
Posted
技术标签:
【中文标题】批量执行时如何查找失败的sql语句【英文标题】:How to find failure sql statement when executing as a batch 【发布时间】:2019-04-22 15:57:43 【问题描述】:我正在批量运行 sql 插入
statement.executeBatch();
当多行之一失败时,它会抛出 BatchUpdateExeception。
我想知道它失败了哪一行。
例子:
Caused by: java.sql.BatchUpdateException: ORA-02291: integrity constraint (V500.XFK1Employee) violated - parent key not found
在这种情况下,EmployeeID 在其父表中找不到,
我正在插入 3 行 .. 其中一个由于外键约束而失败,我可以使用 BatchUpdateException 找出它未能将哪个 EmployeeID 插入 SQL 吗?
这只是一个小例子,我有 100 行作为批处理执行
【问题讨论】:
【参考方案1】:希望该链接可以帮助您解决问题 - https://vladmihalcea.com/how-to-find-which-statement-failed-in-a-jdbc-batch-update/。
记录 JDBC 语句的好方法,datasource-proxy 是 one of the best ways of logging JDBC PreparedStatement(s)
我们还需要捕获BatchUpdateException
,并通过调用getUpdateCounts
方法找到成功执行的语句数
【讨论】:
以上是关于批量执行时如何查找失败的sql语句的主要内容,如果未能解决你的问题,请参考以下文章