jdbc批量插入操作(addBatch)

 1 /**
 2  * 批量插入
 3  */
 4     @Test
 5     public void testInsert(){
 6         Connection conn=null;
 7         Statement st=null;
 8         PreparedStatement pst=null;
 9         try {
10             conn=DBUtils.getConn();
11             conn.setAutoCommit(false);//事物不能自动提交
12             st=conn.createStatement();
13             long start = System.currentTimeMillis();
14             String sql="insert into stu1 values(?,?)";
15             pst=conn.prepareStatement(sql);
16             int count=0;
17             for(int i=1;i<=10008;i++){
18                 pst.setInt(1,i);
19                 pst.setString(2,"Tmo"+i);
20                     pst.addBatch();
21                 count++;
22                 if(count==2000){
23                     pst.executeBatch();
24                     pst.clearBatch();
25                     count=0;
26                 }
27             }
28             pst.executeBatch();//对最后不足2000的进行增加
29             pst.clearBatch();
30              conn.commit();//提交事务
31              System.out.println(System.currentTimeMillis()-start);
32         } catch (SQLException e) {
33             // TODO Auto-generated catch block
34             e.printStackTrace();
35         }
36         finally{
37             DBUtils.closeAll(null, st, conn);
38         }
39     }
时间: 2025-01-17 15:36:41

jdbc批量插入操作(addBatch)的相关文章

jdbc批量插入实现大批量数据快速插入

今天在做一个将excel数据导入数据库的程序时,由于数据量大,准备采用jdbc的批量插入.于是用了preparedStatement.addBatch();当加入1w条数据时,再执行插入操作,preparedStatement.executeBatch().我原以为这样会很快,结果插入65536条数据一共花30多分钟,完全出乎我的意料.于是问了一下同事,他们在处理这种大批量数据导入的时候是如何处理的,发现他们也是用的jdbc批量插入处理,但与我不同是:他们使用了con.setAutoCommit

各种数据库的批量插入操作_Oracle

最近工作中需要优化以前各种的Excel批量导入功能,目前将能优化的方面做个记录. 选用技术: 目前.Net可以访问Oracle常用的Dll,有三种: 微软自带的 System.Data.OracleClient Oracle 公司提供的 Oracle.DataAccess System.Data.OleDb  通过比对以后,使用第二种,其原因如下: 访问数据库方式 优点 缺点 System.Data.OracleClient 操作简单,无论32,64直接引用即可使用 微软在4.0之后不会对其更新

JDBC批量插入数据优化,使用addBatch和executeBatch

>>.在之前的玩转JDBC打造数据库操作万能工具类JDBCUtil,加入了高效的数据库连接池,利用了参数绑定有效防止SQL注入中其实忽略了一点,那就是SQL的批量插入的问题,如果来个for循环,执行上万次,肯定会很慢,那么,如何去优化呢? https://www.awaimai.com/841.html 一.用 preparedStatement.addBatch()配合preparedStatement.executeBatch()去批量插入 1 /** 2 * 执行数据库插入操作 4 *

JDBC批量插入性能简单分析

批量插入性能分析:仅仅针对性能 1.使用Statement对象,一次一个,循环插入 2.使用PreparedStatement对象,一次一个,循环插入 3.使用PreparedStatement对象,使用addBatch(),executeBatch(),clearBatch()实现批量插入 注意事项: 1)数据库的驱动需要是5.1.37之后的版本,否则不支持批量操作 2)mysql数据库默认不开启批量操作,需要在数据库的url后面加上:?rewriteBatchedStatements=tru

Java MySql 批量插入数据库addBatch

//addBatch批量插入数据库 public static void insertCommentToMySql(Set<String> commentList) { Iterator<String> it = commentList.iterator(); Statement st=null; try { st = DBConnection.getConnection(dbName,dbUser,dbPwd).createStatement(); } catch (SQLExc

使用oledb对数据库进行增删改查及批量插入操作

使用oledb操作数据库工具类,可使用泛型统一操作 using System; using System.Collections.Generic; using System.Data; using System.Data.OleDb; using System.Linq; using System.Reflection; using System.Text; using System.Windows.Forms; namespace CommonUtil { public class DataB

jdbc批量插入数据

//插入很多书(批量插入用法) public void insertBooks(List<Book> book) {   final List<Book> tempBook=book;   String sql="insert into book(name,pbYear) values(?,?)";   jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter()   {    public v

JDBC批量插入不生效

&rewriteBatchedStatements=true 只有把rewriteBatchedStatements参数置为true, JDBC驱动才会帮你批量执行SQL

【实践】jdbc批量插入数据

参考文献:http://my.oschina.net/u/1452675/blog/203670 http://superjavason.iteye.com/blog/255423 1 /*测试批量写入数据*/ 2 long start = System.currentTimeMillis(); 3 DaoRecord daoRecord = new DaoRecord(); 4 List<T> list = new ArrayList<T>(); 5 for(int i = 1;