Java批量插入数据


原创  2015年08月25日 14:13:06


  • 3156


实现Java批量插入数据库数据,在javaeye中看到过几篇关于实现Java批量插入数据库数据,转载时没有找到,就自己写一下,也算是对自己学习过程中所遇到过的问题做一个总结。

一般关于批量向数据库插入数据都采用PreparedStatement、Statement…………也包括直接使用JDBC API、框架…………

也看到过几篇关于这些内容的总结,及大家的评论,以下为我总结的关于批量向数据库插入数据。

 

JDBC API实现配量插入数据:有篇文章介绍过关于JDBC API、Hibernate实现批量插入数据,采用JDBC API 方式实现随着数据的增长,速度更胜于Hibernate。当然,对于这个测试的准确我并不保证,但是我也会优先选用JDBC API方式实现(原因:简单、易学、相对于框架更通用,不会过时)。

 

PreparedStatement对象实现批量插入数据:PreparedStatement是真正的批处理命令,不是其他的伪批处理命令可以相比的(个人意见),它相对于其他的实现批量处理是非常的强大,比如字段不断改变,每次都要从文件从新读取就只能使用PreparedStatement对象来实现。再有就是存在即合理,既然PreparedStatement对象可以多次高效地执行预编译的语句,就一定有其原因(JDk源码没有分析过,和Statement实现的区别不了解)。

 

3,实现批量插入数据库数据

 

 

Java代码  

          



[java]  view plain  copy


1. Class.forName("com.mysql.jdbc.Driver");  
2. "jdbc:mysql://" +  
3. "localhost:3306/excel2mysql","wanle", "wanle");  
4. // 关闭事务自动提交  
5. false);  
6.   
7. "HH:mm:ss:SS");  
8.            TimeZone t = sdf.getTimeZone();  
9. 0);  
10.            sdf.setTimeZone(t);  
11.            Long startTime =System.currentTimeMillis();  
12.   
13. "insert into test04 values (?,'中国')");  
14. for (int i = 0; i < 10000; i++){  
15. 1, i);  
16. // 把一个SQL命令加入命令列表  
17.                pst.addBatch();  
18.            }  
19. // 执行批量更新  
20.            pst.executeBatch();  
21. // 语句执行完毕,提交本事务  
22.            con.commit();  
23.   
24.            Long endTime =System.currentTimeMillis();  
25. "用时:" + sdf.format(newDate(endTime - startTime)));  
26.   
27.            pst.close();  
28.            con.close();


 

插入10000条数据用时3141毫秒,对于我已经很理想了, 毕竟我们不会使用MySQL进行非常大型项目的开发,对于10000条数据3秒多点,已经可以了,我相信对于大家应该也足以应付了,我们不会每天都插入10000条吧,当然对于我的话如果有这样的需求,我不会选择MySQL。


实现Java批量插入数据库数据,在javaeye中看到过几篇关于实现Java批量插入数据库数据,转载时没有找到,就自己写一下,也算是对自己学习过程中所遇到过的问题做一个总结。

一般关于批量向数据库插入数据都采用PreparedStatement、Statement…………也包括直接使用JDBC API、框架…………

也看到过几篇关于这些内容的总结,及大家的评论,以下为我总结的关于批量向数据库插入数据。

 

JDBC API实现配量插入数据:有篇文章介绍过关于JDBC API、Hibernate实现批量插入数据,采用JDBC API 方式实现随着数据的增长,速度更胜于Hibernate。当然,对于这个测试的准确我并不保证,但是我也会优先选用JDBC API方式实现(原因:简单、易学、相对于框架更通用,不会过时)。

 

PreparedStatement对象实现批量插入数据:PreparedStatement是真正的批处理命令,不是其他的伪批处理命令可以相比的(个人意见),它相对于其他的实现批量处理是非常的强大,比如字段不断改变,每次都要从文件从新读取就只能使用PreparedStatement对象来实现。再有就是存在即合理,既然PreparedStatement对象可以多次高效地执行预编译的语句,就一定有其原因(JDk源码没有分析过,和Statement实现的区别不了解)。

 

3,实现批量插入数据库数据

 

 

Java代码  

          



[java]  view plain  copy



1. Class.forName("com.mysql.jdbc.Driver");  
2. "jdbc:mysql://" +  
3. "localhost:3306/excel2mysql","wanle", "wanle");  
4. // 关闭事务自动提交  
5. false);  
6.   
7. "HH:mm:ss:SS");  
8.            TimeZone t = sdf.getTimeZone();  
9. 0);  
10.            sdf.setTimeZone(t);  
11.            Long startTime =System.currentTimeMillis();  
12.   
13. "insert into test04 values (?,'中国')");  
14. for (int i = 0; i < 10000; i++){  
15. 1, i);  
16. // 把一个SQL命令加入命令列表  
17.                pst.addBatch();  
18.            }  
19. // 执行批量更新  
20.            pst.executeBatch();  
21. // 语句执行完毕,提交本事务  
22.            con.commit();  
23.   
24.            Long endTime =System.currentTimeMillis();  
25. "用时:" + sdf.format(newDate(endTime - startTime)));  
26.   
27.            pst.close();  
28.            con.close();


 

插入10000条数据用时3141毫秒,对于我已经很理想了, 毕竟我们不会使用MySQL进行非常大型项目的开发,对于10000条数据3秒多点,已经可以了,我相信对于大家应该也足以应付了,我们不会每天都插入10000条吧,当然对于我的话如果有这样的需求,我不会选择MySQL。