- 浏览: 117308 次
- 来自: ...
文章分类
最新评论
-
x影千绝:
...
JDBC addbatch批量处理数据时有最大值限制 -
hunnuxiaobo:
为什么呢?
JDBC addbatch批量处理数据时有最大值限制 -
天涯海角tour:
是啊? 我在7.1下就装不上jbpm4.4,按你这着方法
MyEclipse7.1插件安装 -
t8500071:
原来exec后是子进程,怪不得我怎么看都不像是一个完全独立的进 ...
Java的多进程运行模式分析 -
海阔天空love:
很实用 。。。能给个例子吗?
现有的Web打印控制技术分成几种方案
在用jdbc向数据灌入数据时,发现120000的数据每次只能灌入50000多条,其他的就没有了。
在oracle 9i(windows 2003),oracle 10g(RHEL 4)上试验证有相同的结果。
使用定量灌入的办法,每5W条定义为一个事务,进行提交,将120000数据循环灌入,成功。
对于批量的update,delete操作两样有5W条左右的记录数限制。
结论:jdbc批量数据处理的每个批次是有数量的限制的。
我在本地环境中测试的限制量为每批54464条,其他配置的机器没有试过。
以下是插入数据时的代码:
以下是删除数据时的代码:
以下是更新数据的代码:
在oracle 9i(windows 2003),oracle 10g(RHEL 4)上试验证有相同的结果。
使用定量灌入的办法,每5W条定义为一个事务,进行提交,将120000数据循环灌入,成功。
对于批量的update,delete操作两样有5W条左右的记录数限制。
结论:jdbc批量数据处理的每个批次是有数量的限制的。
我在本地环境中测试的限制量为每批54464条,其他配置的机器没有试过。
以下是插入数据时的代码:
ConnDB cd = new ConnDB(); Connection ct = null; PreparedStatement pst = null; ResultSet rs = null; ct = cd.getConn(); String insertSql = "insert into mytable (name,age) values(?,?)"; System.out.println(insertSql); try { ct.setAutoCommit(false); // 开始事务 pst = ct.prepareStatement(insertSql); for (int i = 0; i < 120000; i++) { pst.setString(1, "name" + i); pst.setInt(2, i); pst.addBatch(); System.out.println(i); //分段提交 if((i%50000==0&& i!=0)||i== (120000 -1)){ pst.executeBatch(); ct.commit(); ct.setAutoCommit(false);// 开始事务 pst = ct.prepareStatement(insertSql); System.out.println("------------>50000"); } } ct.commit();// 提交事务 } catch (SQLException e) { try { ct.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } e.printStackTrace(); } catch (RuntimeException e) { try { ct.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } } finally { cd.close(ct, pst, rs); } }
以下是删除数据时的代码:
ConnDB cd = new ConnDB(); Connection ct = null; PreparedStatement pst = null; ResultSet rs = null; ct = cd.getConn(); String deleteSql = "delete from mytable t where t.name=?"; System.out.println(deleteSql); int[] intArray = new int[120000]; try { ct.setAutoCommit(false); // 开始事务 pst = ct.prepareStatement(deleteSql); for (int i = 0; i < 120000; i++) { pst.setString(1, "name" + i); pst.addBatch(); System.out.println(i); // 分段提交 if ((i % 50000 == 0 && i != 0) || i == (120000 - 1)) { intArray = pst.executeBatch(); ct.commit(); ct.setAutoCommit(false);// 开始事务 pst = ct.prepareStatement(deleteSql); System.out.println("------------>50000"); } } ct.commit();// 提交事务 } catch (SQLException e) { try { ct.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } e.printStackTrace(); } catch (RuntimeException e) { try { ct.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } } finally { cd.close(ct, pst, rs); } }
以下是更新数据的代码:
ConnDB cd = new ConnDB(); Connection ct = null; PreparedStatement pst = null; ResultSet rs = null; ct = cd.getConn(); String deleteSql = "update mytable t set t.age =20 where t.name=?"; System.out.println(deleteSql); int[] intArray = new int[120000]; try { ct.setAutoCommit(false); // 开始事务 pst = ct.prepareStatement(deleteSql); for (int i = 0; i < 120000; i++) { pst.setString(1, "name"+i); pst.addBatch(); System.out.println(i); // 分段提交 if ((i % 50000 == 0 && i != 0) || i == (120000 - 1)) { intArray = pst.executeBatch(); ct.commit(); ct.setAutoCommit(false);// 开始事务 pst = ct.prepareStatement(deleteSql); System.out.println("------------>50000"); } } ct.commit();// 提交事务 } catch (SQLException e) { try { ct.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } e.printStackTrace(); } catch (RuntimeException e) { try { ct.rollback(); } catch (SQLException e1) { e1.printStackTrace(); } } finally { cd.close(ct, pst, rs); } }
发表评论
-
thinkpad T440P 无线网卡睡眠恢复后无法上网故障的解决
2014-08-06 23:54 2567现象:thinkpad T440P 无线网卡睡眠恢复后无法上网 ... -
myeclipse10.7.1注册及导出war异常的破解
2013-03-02 12:55 7一、原作者的破解程序在myeclipse10.7.1环境下测试 ... -
tcnative-1_dll下载地址
2012-04-09 22:31 1081tcnative-1.dll下载地址: http://arch ... -
转:权限的分类
2011-09-30 16:59 1077权限主要分两大类:一是功能权限,二是数据权限。 功能权 ... -
转:表单同时提交多条记录
2011-09-07 09:38 2507http://zhidao.baidu.com/questio ... -
立即行动 拯救JAVA
2011-04-02 09:12 827通过Oracle目前的各种行动,我可以肯定它会比微软更 ... -
转:java获取根路径有两种方式
2010-09-04 22:49 2476http://java.chinaitlab.com/net/ ... -
转:java等比例压缩图片
2010-08-24 15:03 2111http://hi.baidu.com/bdusnb/blog ... -
转:多路归并排序(远远大于内存的数据进行外排序)
2010-08-20 16:38 1894http://hi.baidu.com/qq350884961 ... -
转:两个字母搞定J2EE通用分页标签
2010-06-16 15:59 1421两个字母搞定J2EE通用分 ... -
系统中那些部分可以提取为公共部分?
2010-06-12 18:39 822我目前能想到的就是: 分页、上传、通用DAO层、控制层、数据字 ... -
转:Quartz在Spring中动态设置cronExpression (spring设置动态定时任务)
2010-06-09 09:22 1116http://hi.baidu.com/vip099/blog ... -
c3p0 no bug but the windows xp have
2010-05-31 08:33 17225月30日,用了一天的时间在找一个c3p0的bug,但没有找到 ... -
转:如何利用eclipse实现批量修改文件的编码方式
2010-05-29 14:02 3500原文地址:http://dev.firnow.com/cour ... -
转载:教你彻底解决 Tomcat 5下文字乱码问题
2010-03-04 20:30 895http://tech.ccidnet.com/art/353 ... -
网站如何赚钱
2009-05-28 13:30 609很多朋友,特别是对网 ... -
走进Java 7中的模块系统
2009-05-15 09:44 993http://developer.51cto.com/art/ ... -
MyEclipse7.1插件安装
2009-04-28 11:06 3571最近刚使用MyEclise 7.1 ,发现期插件安装与以前有所 ... -
Java的多进程运行模式分析
2009-04-25 21:05 1175一般我们在Java中运行其它类中的方法时,无论是静态调用,还是 ... -
Erlang与JAVA的交互操作
2009-04-23 08:54 1573http://www.lupaworld.com/action ...
相关推荐
JDBC 批量处理语句是指使用 JDBC 连接数据库时,批量执行 SQL 语句的方法。这种方法可以大大提高更新处理速度,减少数据库访问次数,提高应用程序的性能。 在 JDBC 中,批量处理语句包括两个方法:addBatch(String)...
通过合理利用JDBC的批量处理功能,开发者可以优化数据操作的性能,特别是在处理大数据量时,能有效减少数据库的负担,提高系统的整体响应速度。因此,理解和掌握批量处理是每个Java数据库开发者必备的技能之一。
本文将深入探讨如何使用JDBC进行批量插入数据,这在处理大量数据时能显著提高性能。 批量插入数据是数据库操作中常见的一种优化策略,特别是在数据分析、数据迁移或大数据处理等场景。传统的单条插入方式可能会导致...
批量操作是指在一次数据库连接中执行多次SQL语句的操作,这种方式能显著提高程序性能,尤其是在处理大量数据时。 **批量插入**主要用于数据导入和日志记录等场景。例如,在日志系统中,通常会将日志信息先写入到...
JDBC的批量处理机制是提高数据库操作效率的重要手段,尤其是在处理大量数据时。普通插入、批处理和存储过程的批量执行各有特点和适用场景。普通插入适用于小规模数据操作,而批处理和存储过程则更适合于大规模数据...
在Java编程领域,数据批量处理是一项常见的任务,尤其在大数据、数据库操作以及系统集成等场景中,批量处理能显著提高效率并减少资源消耗。本文将深入探讨Java如何进行数据批量处理,涉及的主要知识点包括批量读取、...
在数据库操作中,批量插入(Batch Insert)是一种提高性能的有效方式,尤其是在处理大量数据时。本文将探讨Mybatis和JDBC在批量插入MySQL数据库时的性能差异,并提供相关的测试资源。 首先,JDBC(Java Database ...
在处理大量Blob数据时,传统的单条插入方式可能会导致性能低下,因为每条SQL语句都需要与数据库进行交互,这会增加网络传输和数据库处理的开销。因此,"jdbc批量插入大字段"这个话题旨在探讨如何高效地通过Java JDBC...
本文中提供了一个完整的示例代码,演示了Java实现批量向mysql写入数据的方法,包括JDBC连接mysql数据库、批量向mysql写入数据和基本的异常处理等操作。该示例代码可以作为Java程序设计的参考,帮助读者更好地理解...
批量插入数据是一种提高数据库操作性能的重要技术,尤其在处理大量数据时。本篇文章将详细介绍如何使用Java实现JDBC批量插入数据,并比较三种常见的JDBC批量插入编程方法。 **方法一:使用PreparedStatement加批量...
在数据库操作中,效率至关重要,尤其是在处理大量数据时。JDBC(Java Database Connectivity)作为Java与数据库交互的标准接口,提供了一种批量处理SQL语句的功能,以提高处理速度,减少网络通信开销,从而优化整体...
综上所述,通过JDBC连接程序实现数据库数据迁移是一个涉及多步骤的过程,包括连接数据库、编写查询、处理结果、批量插入、资源管理和错误处理。在实际操作中,应根据具体业务需求进行调整和优化,确保迁移的高效和...
批处理操作在处理大量数据时非常有用,可以减少网络通信次数,提升性能。在JDBC中,批处理主要通过Statement对象的addBatch()和executeBatch()方法实现: 1. 添加批处理:首先创建Statement对象,然后使用addBatch...
批量插入数据时,可以使用`addBatch()`和`executeBatch()`方法,以减少与数据库交互的次数。 对于数据导出,可能是读取数据库数据并写入文件,多线程可以并行处理不同的数据段,加快写入速度。可以使用`...
【IT十八掌徐培成】Java基础第23天的课程主要聚焦在JDBC操作数据库时的批量处理技术,特别是`addBatch`和`executeBatch`这两个关键方法。在Java中,当我们需要对数据库进行大量数据的插入、更新或删除操作时,传统的...
- 批量处理:当有大量数据操作时,使用批处理可以大大提高效率。 - 连接池:通过连接池管理数据库连接,避免频繁创建和关闭连接,提高系统性能。 总结来说,JDBC是Java开发中与数据库交互的核心技术,它提供了丰富...
**JDBC处理Oracle数据详解** Java Database Connectivity (JDBC) 是Java编程语言中用于与数据库交互的一组标准API。Oracle数据库是世界上最广泛使用的数据库系统之一,尤其在企业级应用中占据主导地位。JDBC提供了...
当处理大量数据时,使用JDBC进行有效的数据操作变得尤为重要。本篇文章将深入探讨如何通过批处理来优化JDBC操作,并避免在大数据读取过程中出现错误。 #### 一、JDBC批处理的基本概念 批处理是指将多个单独的SQL...
在Java开发中,当需要向MySQL数据库大量插入数据时,使用JDBC的批量处理功能可以显著提高效率。本文将详细讲解如何使用JDBC批量插入10万条数据,并探讨其背后的原理和优化策略。 批量处理在JDBC中主要通过Statement...
**JDBC数据连接源码详解** Java Database Connectivity (JDBC) 是Java编程语言与各种数据库交互的一种标准接口。它由Sun Microsystems(现为Oracle公司)开发,为Java开发者提供了访问数据库的强大工具。JDBC允许...