关于jdbc事务处理,批量插入数据的问题

部分代码如下:

Class.forName(driver).newInstance();
con = DriverManager.getConnection(url,"root","123456");
if (con==null){
System.out.println("NULL");
}
String SQL = "Insert into test.test value (null,?,?,?,?,?,?,?,?,?,?,?,?,?);" ;
con.setAutoCommit(false);

PreparedStatement pst = (PreparedStatement) con.prepareStatement(SQL);
while((dbtxtcontent = br.readLine())!=null)
{
dbtxtcontent = dbtxtcontent.replaceAll("\'","");
String[] val = dbtxtcontent.split(",");
boolean flag = false;
try {
pst.setInt(1, k);
k++;
pst.setString(2, ""+val[0]);
pst.setString(3, ""+val[1]);
pst.setString(4, ""+val[2]);
pst.setString(5, ""+val[3]);
pst.setString(6, ""+val[4]);
pst.setString(7, ""+val[5]);
pst.setString(8, ""+val[6]);
pst.setString(9, ""+val[7]);
pst.setString(10, ""+val[8]);
pst.setString(11, ""+val[9]);
pst.setString(12, ""+val[10]);
pst.setString(13, ""+val[11]);
pst.addBatch();

}
catch (Exception e)
{
System.err.println("Error CODE:" + e);
}
line++;
}
pst.executeBatch();
con.commit();
pst.close();

con.close();

原程序目的是获取一数据文件内容,并将数据插入数据库。
现在的问题是,数据量较大,全部加入到addBatch,执行时提示内存溢出,
读一条插一条的方法不能在指定的时间内将数据插入数据库,
我想分多次插入,例如每次20000条,数据不是整万的,有零头,尝试了很多次,都没有找到方法
请问大神们该如何修改这段代码?????

2个回答

这个不是很简单,设置一个变量记录下,
int count = 0;
while(readline) {
count++;
if(count==2000){
executeBatch();
count = 0;
}
}
if(count>0){
executeBatch();
}

batchSize没有要求要整万吧?

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐