有人可以建议我如何将批处理查询插入到Apache Derby DB中,同时仍处理具有良好性能的重复条目吗?
作为尝试和平衡性能以及在INSERT上处理重复键的能力的最后手段,我决定让JDBC / Derby告诉我何时批处理查询会导致重复键,捕获错误,然后继续剩下的批量查询。
不幸的是,一旦检测到错误,它似乎就会清除整批查询,这意味着我将丢失所有剩余的记录。
我尝试的事情:
如果只有Derby支持INSERT IGNORE。
由于
答案 0 :(得分:3)
驱动程序在发生错误后可以继续执行批处理语句的JDBC says:
如果批量更新中的某个命令无法正确执行, 此方法抛出BatchUpdateException,JDBC驱动程序可能或 可能无法继续处理批处理中的其余命令。
现在,如果遇到错误,嵌入模式批处理中的derby docs state会停止,而网络驱动程序会继续:
处理批处理期间遇到的错误情况 java.sql.Statement,java.sql.PreparedStatement和 java.sql.CallableStatement是不同的。使用嵌入式驱动程序 遇到错误时处理停止;使用网络客户端 驱动程序处理继续,但是在中定义了适当的值 在生成的更新计数中返回java.sql.Statement api 阵列。
但是考虑到您想要执行INSERT IGNORE
,您只需使用Derby支持的MERGE
statement。