批量执行时如何查找失败的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语句的主要内容,如果未能解决你的问题,请参考以下文章

如何从 SQL *PLUS 中的批量插入中查找失败的插入语句

mybatis中批量更新的问题

java jdbc 执行sql语句批量操作问题

php函数mysql_query批量执行多句sql语句

php函数mysql_query批量执行多句sql语句

java 批量执行sql语句 mysql批量执行sql语句