`
daoshud1
  • 浏览: 550310 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

如何用java jdbc 向数据库表插入大数据量

    博客分类:
  • java
阅读更多
jvm:-Xmx1024m
size = 1000000,可以插入成功。

如果再为size增大一个数量级,还是OutOfMemoryError,这时内存已经不好再增加分配了
批量处理本来是为了提高性能,但是太大的数据提交,因为堆的膨胀,堆的寻址会造成性能反而下降。
PreparedStatement加executeBatch方法可以更快,主要想提高预编译sql文件的次数,从而达到提高效率。
如果是为了事务处理,不妨用个变通的办法,建立临时表,导入数据,还是可以用到addBatch,比如每100条一个批次。

然后在另外一张表有个记录,记录是否全部导入成功的标志。

基本思路是利用两段提交理论
------------------------------
public class App {
public static void main(String[] args) throws Exception {
Connection connection = DriverManager.getConnection(
"jdbc:oracle:thin:@localhost:1521:XE", "marshal", "password");
PreparedStatement preparedStatement = connection
.prepareStatement("insert into addbatch_test(id,name) values(?,?)");

int size = 1000000;

for (int i = 0; i < size; i++) {
preparedStatement.setInt(1, i);
preparedStatement.setString(2, "n" + i);
preparedStatement.addBatch();
}

preparedStatement.executeBatch();

preparedStatement.close();
connection.close();
}
}
分享到:
评论

相关推荐

    jdbc连接数据库的方式2

     我要向大家介绍的最重要的经验是充分利用SQL的面向集合的方法来解决数据库处理需求,而不是使用Java等过程化的编程语言。  如果编程人员要在一个表中查找许多行,结果中的每个行都会查找其他表中的数据,最后,...

    Java_JDBC由浅入深

    第十五节 jdbc轻量级封装 88 15.1 将结果集封装为Map 88 15.1.1 ResultSetMetaData演示 88 15.1.2解决多行记录的问题 89 15.1.3 Map结果集的封装 90 15.2 将结果集封装为对象 91 15.2.1 user表POJO的编写 91 15.2.2 ...

    hibernate基础实验

    (2) Hibernate对JDBC进行了轻量级的对象封装,使Java程序员可以随心所欲地使用OO编程思想来处理数据库。 (3) Hibernate采用映射元数据来描述对象-关系的映射细节,元数据通常采用XML。 (4) 关系数据库中的元组...

    jdbc基础和参考

    ORM:使用元数据信息来描述对象和数据库之间的关系,并且能够自动实现java中持久化对象到关系型数据库中表的映射 脏检查:自动对缓存中的数据进行检查,并且选择在合适的时机和数据库之间进行交互,以保持数据的...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    实例053 使用直接插入法 65 实例054 使用sort方法对数组进行排序 67 实例055 反转数组中元素的顺序 68 3.4 常用集合的使用 69 实例056 用动态数组保存学生姓名 69 实例057 用List集合传递学生信息 70 实例058 用...

    支持多数据库的ORM框架ef-orm.zip

    表结构元数据的API也向用户开放,同时支持在使用过程中,灵活调整映射关系,因此用户可以用API动态的创建表结构的模型,从而实现各种动态类型和表的映射(例如POJO中包含一个Map,用于映射各种动态扩展的字段)企业...

    仿拼多多源码java-SqlFaker:轻量级、易拓展的数据库智能填充Java开源库

    SqlFaker是一个Java开发的可快速为数据库生成大量仿真的工具,仅需简单的配置,即可为数据库表批量插入有规律的类似真实数据的内容,可用于数据库调优等操作。 详细文档说明 GitBook: 开源库特性 支持主流MySQL、...

    基于Java Swing + MySQL + JDBC 的图书管理系统.zip

    它完全支持结构化查询语言(SQL),允许用户进行数据查询、插入、更新、删除、创建和管理数据库结构等操作。SQL标准的广泛支持使得MySQL易于学习,且与其他关系型数据库系统有良好的互操作性。 存储引擎 MySQL支持...

    java8源码-dbm:一个简单的JavaORM框架,基于spring-jdbc

    jdbc实现的轻量级orm 项目github地址: 联系邮箱: 目录 特色 基本的实体增删改查(单表)不需要生成样板代码和sql文件。 返回结果不需要手动映射,会根据字段名称自动映射。 支持sql语句和接口绑定风格的DAO,但sql...

    JAVA面试题最全集

    请用java写二叉树算法,实现添加数据形成二叉树功能,并以先序的方式打印出来. 43.请写一个java程序实现线程连接池功能? 44.给定一个C语言函数,要求实现在java类中进行调用。 45.如何获得数组的长度? 46....

    java面试题

    答:当数据量大,并且表关系复杂的时候不建议使用。 sleep()和wait()有什么区别? 答:sleep()是线程类的方法,导致此线程暂停执行指定时间,给执行机会给其他线程,但监控状态依然保持,到时候会自动恢复。 wait...

    规范:否ORM(NORM)是一个Java库,用于通过Java安全机制以更加面向SQL的方式使用数据库

    没有ORM No ORM(NORM)软件包是一组基于JDBC构建的Java实用程序,用于以更安全和类型安全的方式更好地将SQL查询集成到Java代码中,而无需在Java中重新描述SQL表结构。 相反,其想法是使程序员能够在插入Java的类型...

    java 面试题 总结

    通常性能上较ArrayList差,而LinkedList使用双向链表实现存储,按序号索引数据需要进行前向或后向遍历,但是插入数据时只需要记录本项的前后项即可,所以插入速度较快。 8、EJB是基于哪些技术实现的?并说出Session...

    整理后java开发全套达内学习笔记(含练习)

    System.out.printf() 可插入带 % 的输入类型,前两种只可以插入转义符, 不能插入 % 的数据或字符串 在 printf 里面,输出有5个部分 %[argument_index$][flags][width][.precision]conversion 以“%”开头,[第几个...

    druid连接池的jar包

    Druid在数据摄入之前,首先要定义一个数据源(DataSource,类似于数据库中表的概念),Druid是一个分布式数据分析平台,也是一个时序数据库,也是一个集群系统,使用zookeeper做节点管理和事件监控。 Druid是一个专为...

Global site tag (gtag.js) - Google Analytics