Java 针对oracle的jdbc批处理更新
我正在使用executeBatch()将数据插入oracle。我面临的问题只发生在一张桌子上。如果批处理大小为1000,则会得到ArrayIndexOutOfBoundException,但如果批处理大小为500,则效果良好。这种情况只发生在一个表中,该表大约有38列,包含原始数据、nvarchar数据、varchar数据和数字数据,对于所有其他表,它都可以正常工作 那个么这批货的大小有什么限制吗?还是我做错了什么Java 针对oracle的jdbc批处理更新,java,oracle,jdbc,Java,Oracle,Jdbc,我正在使用executeBatch()将数据插入oracle。我面临的问题只发生在一张桌子上。如果批处理大小为1000,则会得到ArrayIndexOutOfBoundException,但如果批处理大小为500,则效果良好。这种情况只发生在一个表中,该表大约有38列,包含原始数据、nvarchar数据、varchar数据和数字数据,对于所有其他表,它都可以正常工作 那个么这批货的大小有什么限制吗?还是我做错了什么 if(counter==500) { try{
if(counter==500)
{
try{
log.info("trying to execute batch with"+counter);
int done[]=rowInsertStmt.executeBatch();
rowInsertStmt.clearBatch();
conn.commit();
}
catch(Exception e)
{
log.info("error while executing batch with counter"+counter);
}
counter=0;
log.info("executed batch "+counter);
}else if(counter<500)
{
rowInsertStmt.addBatch();
counter++;
}
if(计数器==500)
{
试一试{
log.info(“尝试使用“+计数器”执行批处理);
int done[]=rowInsertStmt.executeBatch();
rowInsertStmt.clearBatch();
conn.commit();
}
捕获(例外e)
{
log.info(“使用计数器“+计数器执行批处理时出错”);
}
计数器=0;
日志信息(“已执行批次”+计数器);
}否则如果(计数器)报告了哪行代码中的ArrayIndexOutOfBoundException
异常?int done[]=rowInsertStmt.executeBatch();请提供您的驱动程序版本?Oracle似乎存在与此相关的错误。我通过下载最新的jar版本再次使用odbc6瘦驱动程序,或者您可能必须限制批处理大小。!