
具体是这样使用的:
循环2000条数据例如数据被装到了一个名叫dataList的List<Map<String,String>>中,那么批量更新就是这样执行的
Map map = null
String data1= ""
String data2 = ""
String sql = insert into biao values(?,?)
PreparedStatement preStmt = conn.prepareStatement(sql)
for(i = 0i<dataList.size()i++){
map = dataList.get(i)
data1=map.get("data1")
data2 = map.get("data2")
preStmt.setString(1,data1)
preStmt.setString(2, data2)
preStmt.addBatch()
}
preStmt.executeBatch()
preStmt.clearBatch()
1,关闭目标表上的索引。2,关闭数据库日志
3,增加数据库的临时表空间。
4,分批次的提交。
5,可以考虑异步提交。
6,在分布式条件下,还可以考虑在不同的数据库结点提交,有底层的消息系统完成数据扩展。
如果成批地处理插入和更新 *** 作,就能够显著地减少它们所需要的时间。Oracle提供的Statement和 CallableStatement并不真正地支持批处理,只有PreparedStatement对象才真正地支持批处理。我们可以使用addBatch()和executeBatch()方法选择标准的JDBC批处理,或者通过利用PreparedStatement对象的setExecuteBatch()方法和标准的executeUpdate()方法选择速度更快的Oracle专有的方法。要使用Oracle专有的批处理机制,可以以如下所示的方式调用setExecuteBatch():PreparedStatement pstmt3D null
try {
((OraclePreparedStatement)
pstmt).setExecuteBatch(30)
...
pstmt.executeUpdate()
}
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)