`
开心就好
  • 浏览: 542358 次
  • 性别: Icon_minigender_1
  • 来自: 石家庄
社区版块
存档分类
最新评论

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,实现批量插入数据库数据

 

 

            Class.forName("com.mysql.jdbc.Driver");
            Connection con = (Connection) DriverManager.getConnection("jdbc:mysql://" +
                    "localhost:3306/excel2mysql", "wanle", "wanle");
            // 关闭事务自动提交
            con.setAutoCommit(false);

            SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss:SS");
            TimeZone t = sdf.getTimeZone();
            t.setRawOffset(0);
            sdf.setTimeZone(t);
            Long startTime = System.currentTimeMillis();

            PreparedStatement pst = (PreparedStatement) con.prepareStatement("insert into test04 values (?,'中国')");
            for (int i = 0; i < 10000; i++) {
                pst.setInt(1, i);
                // 把一个SQL命令加入命令列表
                pst.addBatch();
            }
            // 执行批量更新
            pst.executeBatch();
            // 语句执行完毕,提交本事务
            con.commit();

            Long endTime = System.currentTimeMillis();
            System.out.println("用时:" + sdf.format(new Date(endTime - startTime)));

            pst.close();
            con.close();

 

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

 

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

 

分享到:
评论
10 楼 跳跃的心灵 2009-08-16  
学到东西了,呵呵~~
9 楼 ycysth 2009-08-15  
这样的数据只能是死的?
8 楼 famingyuan 2009-08-14  
1w条  不到2s
7 楼 kimmking 2009-08-04  
use the command : LOAD DATA~~
6 楼 googlename 2009-07-29  
最近在做大批量数据的操作。不知楼主有没有对该方面有过比较深入的研究呢。有资料的话共享下啊。
5 楼 googlename 2009-07-29  
感觉你的那个插入性能有点低了呢。我用的是oracle数据库,插入的数据需要从文件中读取。文件中的每条记录还需要做下字符串的截取。插入数据是每秒一万条左右。
4 楼 开心就好 2009-02-16  
InnoDB 看来要好好学习一下 这个引擎了……
3 楼 开心就好 2009-02-14  
ninthbar 写道

1w条数据3s搞定?MyISAM吧?

http://www.builder.com.cn/2008/0218/738280.shtml
在MySQL 5.0里面,MyISAM和InnoDB存储引擎性能差别并不是很大,针对InnoDB来说,影响性能的主要是 innodb_flush_log_at_trx_commit 这个选项,如果设置为1的话,那么每次插入数据的时候都会自动提交,导致性能急剧下降,应该是跟刷新日志有关系,设置为0效率能够看到明显提升,当然,同样你可以SQL中提交“SET AUTOCOMMIT = 0”来设置达到好的性能。另外,还听说通过设置innodb_buffer_pool_size能够提升InnoDB的性能,但是我测试发现没有特别明显的提升。

基本上我们可以考虑使用InnoDB来替代我们的MyISAM引擎了,因为InnoDB自身很多良好的特点,比如事务支持、存储过程、视图、行级锁定等等,在并发很多的情况下,相信InnoDB的表现肯定要比MyISAM强很多,当然,相应的在my.cnf中的配置也是比较关键的,良好的配置,能够有效的加速你的应用。

如果不是很复杂的Web应用,非关键应用,还是可以继续考虑MyISAM的,这个具体情况可以自己斟酌。

2 楼 开心就好 2009-02-14  
ninthbar 写道
1w条数据3s搞定?MyISAM吧?

是的,基本的设置都才用默认的,没有进行过更改……
1 楼 ninthbar 2009-02-13  
1w条数据3s搞定?MyISAM吧?

相关推荐

    Java实现批量向mysql写入数据的方法

    本文中提供了一个完整的示例代码,演示了Java实现批量向mysql写入数据的方法,包括JDBC连接mysql数据库、批量向mysql写入数据和基本的异常处理等操作。该示例代码可以作为Java程序设计的参考,帮助读者更好地理解...

    一个工具类搞定批量插入增加数据到Mysql数据库

    只要学我一样编写这么一个工具类便可以实现批量插入多条数据,百条,千条,万条,后期还会继续优化增加数据时的速度!有点代码基础的保证能看懂,此项目已经有了前端界面你可以直接的导入然后运行测试既可以了,表...

    Java 实现从Excel批量导入数据到MySQL

    6. **执行SQL**:使用`Statement`或`PreparedStatement`执行SQL语句,批量插入数据。为提高效率,可以使用批处理(batch processing),将多条SQL语句打包一起执行。 7. **错误处理**:在执行过程中捕获并处理可能...

    Mybatis与JDBC批量插入MySQL数据库性能测试

    本文将探讨Mybatis和JDBC在批量插入MySQL数据库时的性能差异,并提供相关的测试资源。 首先,JDBC(Java Database Connectivity)是Java平台中用于与数据库交互的一种规范,它允许程序员使用SQL语句直接操作数据库...

    Java代码 MySql导出到SqlLite

    8. **批量操作**: 为了提高效率,通常会使用批量插入或更新操作,而不是一条一条地处理数据。这样可以减少网络延迟和数据库交互次数。 9. **异常处理**: 在处理数据库操作时,必须考虑到可能出现的异常,如连接错误...

    java实现Excel数据导入到mysql数据库.zip

    本项目"java实现Excel数据导入到mysql数据库"旨在利用Java技术将Excel表格中的数据高效地导入到MySQL数据库,并且在数据库中存在相同数据时进行更新,同时也支持将数据库中的数据导出到Excel表中。这个过程涉及到多...

    用java程序怎么实现200ms往数据库中插入10000条数据

    批量插入数据 如果我们需要插入大量数据,可以使用批量插入方式来提高效率。我们可以使用 `addBatch()` 方法将多个插入语句添加到批量中,然后使用 `executeBatch()` 方法执行批量插入操作。 优化插入性能 为了...

    往数据库插入数据,相同的不插入

    在Java开发中,常常会遇到需要将一系列数据插入数据库的需求。但在实际操作过程中,为了避免重复数据的插入,我们需要实现一种机制来判断待插入的数据是否已存在于数据库中。这不仅可以提高数据的准确性,还能有效...

    java快速插入千万级数据

    java快速插入千万级数据,亲测91秒插入1700万数据!!!

    java连接mysql数据库实现单条插入和批量插入

    * 灵活:Java 连接 MySQL 数据库实现单条插入和批量插入可以灵活地处理不同的数据操作,满足不同的业务需求。 结论 Java 连接 MySQL 数据库实现单条插入和批量插入是 Java 编程语言中的一种常见操作。通过使用 ...

    技术支持利用JSON数据批量操作数据库(插入、更新)

    本篇文章详细介绍了如何利用JSON数据批量操作数据库(插入、更新),包括JSON数据的解析、数据库的连接与操作以及异常处理等方面的知识点。通过这些知识点的学习,读者可以更好地理解和应用相关的技术,在实际项目...

    SpringBoot使用mybatis批量新增500万数据到mysql数据库Demo

    在本项目中,我们主要探讨的是如何利用SpringBoot集成Mybatis框架进行大数据量(例如500万条)的批量插入操作,并将其高效地存入MySQL数据库。这个Demo旨在提供一个学习实例,帮助开发者理解并优化大数据处理的性能...

    JDBC实现MYSQL数据库迁徙

    此外,为了提高效率,可以考虑使用批量插入,即一次提交多条插入语句,减少网络交互和数据库的开销。同时,确保在迁移过程中正确处理主键和外键约束,避免数据不一致。 在实际操作中,可能还会遇到如字符集转换、...

    JDBC连接MySQL数据库批量插入数据过程详解

    在本文中,我们提供了一个完整的Java实现代码,展示了JDBC连接MySQL数据库批量插入数据的过程详解。该代码使用FastJSON库读取本地JSON数据,然后使用JDBC连接MySQL数据库批量插入数据。 六、结论 本文详细介绍了...

    Java使用JDBC向MySQL数据库批次插入10W条数据(测试效率)

    综上所述,Java使用JDBC进行批量插入数据是通过PreparedStatement的批处理功能实现的,通过设置手动提交和优化连接字符串,以及合理控制批量处理的大小和选择合适的数据库配置,可以有效地提高插入10万条或更多数据...

    Java调用数据库存储过程[mysql测试通过]

    在Java编程中,调用数据库存储过程是一种常见的操作,特别是在处理复杂的业务逻辑或者批量数据操作时。本篇文章将深入探讨如何使用Java与MySQL数据库进行交互,实现调用存储过程,并提供一个测试通过的实例。 首先...

    JDBC批量插入 更新 删除等操作

    **批量插入**主要用于数据导入和日志记录等场景。例如,在日志系统中,通常会将日志信息先写入到文件中,然后再定期批量导入到数据库中进行存储和分析。下面详细介绍JDBC批量插入的具体实现方式: 1. **使用...

    Java+MySQL+将数据导入到Excel中,Java将Excel中的数据导入到MySQL数据库中,

    4. 批量插入:将Excel数据分批插入到数据库,提高效率。 5. 提交事务:确保所有更改都成功提交到数据库。 6. 关闭连接:操作完成后,记得关闭数据库连接。 反之,从MySQL数据库导出数据到Excel则涉及以下步骤: 1....

    利用poi获取excel数据批量插入大量数据到mysql

    本教程将详述如何使用Apache POI库读取Excel数据,并通过Java的JDBC接口批量插入到MySQL数据库中。Apache POI是Java平台上的一个开源项目,它允许程序员创建、修改和显示Microsoft Office格式的文件,其中包括Excel...

    spring jdbc Templatetest 访问mysql数据库,批量插入数据

    本主题将详细讲解如何使用Spring JDBC Template访问MySQL数据库并进行批量插入数据的操作。 首先,我们需要在项目中引入Spring框架的相关依赖,通常包括`spring-context`和`spring-jdbc`。这些可以在Maven或Gradle...

Global site tag (gtag.js) - Google Analytics