插入大量数据时发生Java SQL异常
我试图将大量数据从一个表插入到另一个表中。这两个表格位于不同的区域。插入数据时,ID(用于创建连接)能够插入较少行数的数据。若插入的数据超过500行,则抛出异常 SqlException:db2sql错误:SQLCODE:-551,SQLSTATE:42501,SQLERRMC:DB2GCS;执行包;NULLID.SYSLH203 我无法找到为什么在数据更多的情况下显示相同id的授权异常插入大量数据时发生Java SQL异常,java,database,jdbc,db2,Java,Database,Jdbc,Db2,我试图将大量数据从一个表插入到另一个表中。这两个表格位于不同的区域。插入数据时,ID(用于创建连接)能够插入较少行数的数据。若插入的数据超过500行,则抛出异常 SqlException:db2sql错误:SQLCODE:-551,SQLSTATE:42501,SQLERRMC:DB2GCS;执行包;NULLID.SYSLH203 我无法找到为什么在数据更多的情况下显示相同id的授权异常 My Code Snippet : while(RSet.next()){ stm
My Code Snippet :
while(RSet.next()){
stmt=test_conn.prepareStatement("Insert Query");
for(int i=1;i<=columnCount;i++){
stmt.setString(i,RSet.getString(i));
}
stmt.addBatch();;
}
stmt.executeBatch();
我的代码片段:
while(RSet.next()){
stmt=测试连接准备状态(“插入查询”);
对于(int i=1;i,您的代码实际上没有正确地进行批处理,这可能是代码中断的原因。问题是您在不必要地反复准备insert查询
你只需要在循环外准备一次,就像
test_conn.setAutoCommit(false);
stmt = test_conn.prepareStatement("INSERT INTO ...");
while(RSet.next()){
for(int i = 1; i <= columnCount; i++){
stmt.setString(i, RSet.getString(i));
}
stmt.addBatch();
}
stmt.executeBatch();
test_conn.commit();
测试连接设置自动提交(假);
stmt=测试连接准备声明(“插入…”);
while(RSet.next()){
对于(int i=1;我非常感谢Ravi的帮助。但是在进行了您建议的更改之后,插入400条记录仍然需要大约3到4分钟。这可以更快吗?您需要分析应用程序以了解瓶颈在哪里;在Java或DB中。您可以使用System.currentTimeMillis()
在执行之前和之后(并减去值),从应用程序所用的3到4分钟时间中找出批次所用的准确时间。