zoukankan      html  css  js  c++  java
  • 【转】java 实现mysql批量插入

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

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

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

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

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

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

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

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

    以上所有内容均为对于我所学习使用过程中、实际项目开发中的总结,也应用于其中。对于批量插入,数据导入均采用这样的方式。

  • 相关阅读:
    HDU-2544-最短路(floyd)
    HDU-1009-肥鼠交易
    BZOJ-3029: 守卫者的挑战 (期望DP)
    2017年10月23日23:58:04
    BZOJ-2456: mode (神题)
    BZOJ-4542: [Hnoi2016]大数 (莫队算法)
    BZOJ-2120: 数颜色 (带修改莫队)
    BZOJ-2654: tree (kruskal)
    BZOJ-1040: [ZJOI2008]骑士 (树形DP)
    BZOJ-3505: [Cqoi2014]数三角形 (容斥原理+排列组合)
  • 原文地址:https://www.cnblogs.com/itime/p/2347174.html
Copyright © 2011-2022 走看看