`
zyn010101
  • 浏览: 325670 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java类大批量导入数据到MYSQL

阅读更多

      今天在写一个java类,用jdbc批量更新某表一个字段,该字段需要查询其他多张表进行计算得出,中间用了许多select查询,最后拼装成update语句用jdbc操作,当导入到200多条的时候,报错了,提示数据库连接已经用完(我每次调用的时候连接都记得关闭了,程序逻辑没有问题),具体信息如下:

15:50:12 [ERROR] com.zyn.hibernate.test.DataSourceHelper.getConnectionByJdbc(76)
	使用JDBC数据源获得数据库连接出错:The driver was unable to create a connection due to 

an inability to establish the client portion of a socket.

This is usually caused by a limit on the number of sockets imposed by the operating system. 

This limit is usually configurable. 

For Unix-based platforms, see the manual page for the 'ulimit' command. Kernel or system 

reconfiguration may also be required.

For Windows-based platforms, see Microsoft Knowledge Base Article 196271 (Q196271).

-- listing properties --
jdbc.url=jdbc:mysql://192.168.1.211:3306/chart...
jdbc.username=root
jdbc.password=123
jdbc.driverClassName=com.mysql.jdbc.Driver
chinahrt.url=jdbc:mysql://192.168.1.211:3306/china...
15:50:12 [ERROR] com.zyn.hibernate.test.JdbcManager.getObjectListBySQL(391)
	无法获得数据库连接!

java.lang.RuntimeException: 无法获得数据库连接!
	at com.zyn.hibernate.test.DataSourceHelperH

 网上搜索后得知,可以调大数据库的最大连接数来解决该问题,但问题是我没有数据库所在linux服务器的账号和密码,用jdbc操作,也不可能使用hibernate的连接池来解决该问题,自己再写个连接池貌似也划不来,只能采用比较耗时的操作,在进行没次update操作的代码中间加了个 

try{
				Thread.sleep(500);
			}catch(Exception e){
				e.printStackTrace();
			}

 

来解决问题。幸好数据量不是太多,这点时间还忍受的了。

1
2
分享到:
评论
4 楼 ghl0903 2016-11-14  
求分享 工具类的代码 ghl_0903@126.com

谢谢
3 楼 baijian_8d 2012-05-20  
问题不在于连接正常关闭。

在于:web应用 服务器 本地连接端口快速达到5000端口的上限

192.168.1.100 是mysql 服务器 端口 3306

192.168.1.110 是web服务器,在快速创建大量connection的同时,连接端口数快速上升,直到4999

错误提示也说的很清楚,提示你看文章Microsoft Knowledge Base Article 196271

[System Process]:0 TCP 192.168.1.110:4966 192.168.1.100:3306 TIME_WAIT
[System Process]:0 TCP 192.168.1.110:4968 192.168.1.100:3306 TIME_WAIT
[System Process]:0 TCP 192.168.1.110:4970 192.168.1.100:3306 TIME_WAIT
[System Process]:0 TCP 192.168.1.110:4972 192.168.1.100:3306 TIME_WAIT
[System Process]:0 TCP 192.168.1.110:4974 192.168.1.100:3306 TIME_WAIT
[System Process]:0 TCP 192.168.1.110:4976 192.168.1.100:3306 TIME_WAIT
[System Process]:0 TCP 192.168.1.110:4978 192.168.1.100:3306 TIME_WAIT
[System Process]:0 TCP 192.168.1.110:4980 192.168.1.100:3306 TIME_WAIT
[System Process]:0 TCP 192.168.1.110:4982 192.168.1.100:3306 TIME_WAIT
[System Process]:0 TCP 192.168.1.110:4984 192.168.1.100:3306 TIME_WAIT
[System Process]:0 TCP 192.168.1.110:4986 192.168.1.100:3306 TIME_WAIT
[System Process]:0 TCP 192.168.1.110:4988 192.168.1.100:3306 TIME_WAIT
[System Process]:0 TCP 192.168.1.110:4990 192.168.1.100:3306 TIME_WAIT
[System Process]:0 TCP 192.168.1.110:4992 192.168.1.100:3306 TIME_WAIT
[System Process]:0 TCP 192.168.1.110:4994 192.168.1.100:3306 TIME_WAIT
[System Process]:0 TCP 192.168.1.110:4996 192.168.1.100:3306 TIME_WAIT
2 楼 zyn010101 2012-04-16  
Loulley 写道
方法试过了,我发的是两万条,结果还是失败了,只能update到三千多条记录,悲剧呀

你可以把那个时间跳到1000或者更大试试。
1 楼 Loulley 2012-04-16  
方法试过了,我发的是两万条,结果还是失败了,只能update到三千多条记录,悲剧呀

相关推荐

    利用java 导入Excel表格数据到mysql数据库里,源码,直接导入eclipse就可以运行

    在Java开发中,将Excel表格数据导入MySQL数据库是一项常见的任务,尤其在数据处理、数据分析以及系统集成等场景中。这个项目提供了一套完整的源码,可以直接在Eclipse环境中运行,帮助开发者快速实现这一功能。下面...

    Java利用MYSQL LOAD DATA LOCAL INFILE实现大批量导入数据到MySQL

    Java大批量导入MySQL是一种高效的数据导入方式,使用MYSQL的LOAD DATA LOCAL INFILE语句可以快速地从一个文本文件中读取行,并装入一个表中。这种方式广泛应用于数据交换和导入,尤其是在数据量非常大的情况下。 ...

    数据库大批量数据导入excle

    本文将深入探讨如何高效地进行数据库大批量数据导入Excel的过程。 首先,理解批量导入的概念。批量导入是指一次性处理大量数据,而不是逐条插入,这样可以显著减少处理时间,提高系统性能。对于处理几十万条数据的...

    Excel百万级别数据的导入和导出

    6. **数据库的使用**:当数据量达到百万级别时,使用数据库(如MySQL、Oracle、SQL Server或NoSQL数据库)存储数据更为合适。数据库可以提供高效的查询和数据管理功能,同时支持批量导入导出。 7. **数据预处理**:...

    2021 全年工作日假期周末mysql快速导入表

    在实际应用中,快速导入大量数据可能还需要考虑性能优化,比如使用事务处理大批量插入,或者调整MySQL的配置参数以提高导入速度。此外,对于大型企业,可能还需要考虑数据导入对在线服务的影响,选择在低峰时段进行...

    计算机软件-商业源码-向数据库中导入数据的几种方法.zip

    这种方式比使用INSERT语句快得多,适合大批量数据导入。 4. **BULK INSERT**(SQL Server):在Microsoft SQL Server中,BULK INSERT命令用于快速导入大量数据,支持从文件系统或网络位置读取数据。 5. **COPY命令...

    Node.js下向MySQL数据库插入批量数据的方法

    对于大数据量的插入,考虑到事务的使用,可以将所有插入操作包裹在一个事务中,确保数据的一致性。如果在事务中的某一步骤失败,可以回滚事务,防止部分数据被写入数据库。以下是一个基于事务的示例: ```...

    mysql中的Load data的使用方法

    测试把txt文件导入至mysql数据库中: table: txt文件:D:/data.txt (txt文件下载) ... 您可能感兴趣的文章:Java利用MYSQL LOAD DATA LOCAL INFILE实现大批量导入数据到MySQLMySQL中由load data语

    jdbctemplatedemo.zip

    综上所述,"jdbctemplatedemo.zip"项目演示了如何使用Spring Boot的JdbcTemplate来高效地处理大批量数据的导出和导入,这是在现代Web应用程序中常见的需求,尤其是在数据分析、报表生成或数据迁移场景下。...

    积分管理系统java源码-study:学习

    方式导入大批量的数据 创建测试表 实现自定义的inputStream 通过load方式导入 借助中间传输层实现一个小demo netty实现im案例 客户端服务端启动类 定义通信协议 实现序列化和编解码 拆包粘包的实现 互聊 群聊 心跳 ...

    Kettle工具介绍

    它的运行效率高,适用于大批量数据处理。 2. 设计界面直观易用:Kettle提供了一套图形化设计界面,用户可以通过拖拽的方式快速构建ETL流程,无需编写复杂的脚本代码。 3. 强大的使用群体和广泛的应用:由于Kettle...

    sql.rar_数据库 c语言

    描述提到"用数据库语言实现的往数据库中添加数据,大批量",这表明内容可能涉及到批量插入数据到数据库的技巧和方法。 C语言是一种底层编程语言,通常用于系统编程和嵌入式系统,而SQL(Structured Query Language...

    SpringBoot操作数据库jpa-SB系列之006-配套项目

    ​ 环境及工具: 环境: win11 工具: idea 2017 jdk: 1.8 数据库: mysql5.5  maven : 3.2.1 ...项目:maven 导入 ...数据库前端工具:mysql-front (navicat 也可以)主要是这些跟PHPstudy 2018 ...hibernate更新大批量

    Spring Batch参考文档中文版

    Spring Batch是一个用于开发大批量数据处理应用的强大框架。它提供了丰富的功能集来帮助开发者构建高效、可靠的批量处理应用,尤其适用于需要处理大量数据的场景。Spring Batch的设计目标是在提供强大功能的同时保持...

    sqluldr2 教程

    - **批量处理**:支持大批量数据的导出,例如阿里巴巴DBA使用SQLuldr2从生产系统中导出海量数据供数据仓库分析。 - **跨字符集数据交换**:适用于不同字符集之间的数据交换,如US7ASCII与ZHS16GBK之间的中文信息...

    快递单号下单软件

    2. **批量处理**:对于大批量订单,软件支持批量导入订单信息,一次性为多个包裹分配快递单号,提高处理速度。 3. **订单管理**:软件具备订单跟踪功能,可以实时查看每个包裹的状态,包括揽收、运输、派送等环节,...

    csvtosql-开源

    5. **批量操作**:对于大批量数据,`csvtosql` 可以处理大文件,通过分块读取和处理数据,避免内存资源耗尽。 6. **命令行界面和API**:工具提供了命令行接口(CLI),允许用户通过脚本自动化转换过程,同时也提供...

    超详细ORACLE培训实例

    - **批量数据操作**:使用SQL*Loader等工具进行大批量数据导入导出。 #### 第十四章 约束 - **约束类型**:PRIMARY KEY、FOREIGN KEY、UNIQUE等约束类型及其作用。 - **约束管理**:创建、启用、禁用、删除约束的...

    2017最新大数据架构师精英课程

    117_hbase大批量操作7 [! ^" m3 B$ C. {1 S$ h. X 118_hbase架构-表和区域切割( p4 _0 k) J9 A/ ~; [ F 119_hbase架构-区域的合并 120_hbase get-scan-范围指定 121_扫描缓存-超时-切片' O; n; m' P; a6 T/ H$ S! ^ ...

Global site tag (gtag.js) - Google Analytics