excel导入mysql并批量查询_Excel导入MySql数据库批量操作
今天在做一个将excel数据导入数据库的程序时,由于数据量大,准备采用jdbc的批量插入。于是用了preparedStatement.addBatch();当加入1w条数据时,再执行插入操作,preparedStatement.executeBatch()。我原以为这样会很快,结果插入65536条数据一共花30多分钟,完全出乎我的意料。于是问了一下同事,他们在处理这种大批量数据导入的时候是如何处理的,发现他们也是用的jdbc批量插入处理,但与我不同是:他们使用了con.setAutoCommit(false);然后再preparedStatement.executeBatch()之后,再执行con.commit();于是再试,什么叫奇迹?就是刚刚导入这些数据花了半小时,而加了这两句话之后,现在只用了15秒钟就完成了。于是去查查了原因,在网上发现了如下一段说明:
* When importing data into InnoDB, make sure that MySQL does not have autocommit mode enabled because that
requires a log flush to disk for every insert. To disable autocommit during your import operation, surround it with
SET autocommit and COMMIT statements:
SET autocommit=0;
... SQL import statements ...
COMMIT;
第一次,正是因为没有setAutoCommit(false);那么对于每一条insert语句,都会产生一条log写入磁盘,所以虽然设置了批量插入,但其效果就像单条插入一样,导致插入速度十分缓慢。
部分代码如下:
String sql = "insert into table *****";
con.setAutoCommit(false);
ps = con.prepareStatement(sql);
for(int i=1; i<65536; i++){
ps.addBatch();
// 1w条记录插入一次
if (i % 10000 == 0){
ps.executeBatch();
con.commit();
}
}
// 最后插入不足1w条的数据
ps.executeBatch();
con.commit();
照抄,问题解决
【3】当数据库的记录超过2500条的时候,一次全部读取会造成内存溢出,死机,程序崩溃。
解决方法:多线程分批次读取,每个线程每次只读200条
可能有待于改进的地方:
可以直接利用sql查询出48天之内的数据,而不用后续在Java中比对
分享到:
2015-12-31 10:07
浏览 1450
分类:数据库
评论
excel导入mysql并批量查询_Excel导入MySql数据库批量操作相关推荐
- excel导入mysql并批量查询_EXCEL批量导入到Sqlserver数据库并进行两表间数据的批量修改...
Excel 大量数据导入到sqlserver生成临时表并将临时表某字段的数据批量更新的原表中的某个字段 1:首先要对EXCEL进行处理 列名改成英文,不要有多余的列和行(通过ctrl+shift 左或 ...
- 如何在Excel/WPS表格中批量查询顺丰快递信息?
上期我们讲了如何在Excel/WPS表格中批量查询快递信息(还不知道的小伙伴可以看这里:https://zhuanlan.zhihu.com/p/541529548),由于顺丰快递的隐私保护,我们在查 ...
- 如何在Excel/WPS表格中批量查询快递信息?
干电商的小伙伴们还在为如何批量查询快递物流信息发愁吗?别着急,这篇文章或许能够帮助到您. 首先给大家看一下查询的具体成果: 第一步:安装Excel网络函数库 网址:www.excelapi.com 第 ...
- java mysql 多表查询_解析Mysql多表查询的实现
查询是数据库的核心,下面就为您介绍Mysql多表查询时如何实现的,如果您在Mysql多表查询方面遇到过问题,不妨一看. Mysql多表查询: CREATE TABLE IF NOT EXISTS co ...
- mysql怎么子查询_在mysql中如何进行子查询?
在mysql中,子查询是指将一个查询语句嵌套在另一个查询语句中,可以在SELECT.UPDATE和 DELETE语句中配合WHERE子句进行实现,WHERE子句中语法格式为"WHERE (另 ...
- mysql中文模糊查询_解决MySQL中文模糊查询问题
解决MySQL中文模糊查询问题: 我们在MySQL中进行中文模糊查询时,经常会返回一些与之不相关的记录,比如查找%a%时,返回的可能有中文字符,却没有a字符存在.对于此问题目前发现一种方法可以很方便解 ...
- mysql qps 索引查询_【MySQL】MySQL配置调优之 QPS/TPS/索引缓存命中率、innoDB索引缓存命中率、查询缓存命中率查看...
运行中的mysql状态查看: 对正在运行的mysql进行监控,其中一个方式就是查看mysql运行状态. (1)QPS(每秒Query量) QPS = Questions(or Queries) / s ...
- mybatisplus多表关联查询_Excel、MySQL、PowerBI、Python来告诉你 数据关联与联合不一样
阅读提示 本内容为日常频繁使用的数据处理操作,不涉及底层技术问题,烦请爱钻牛角的杠精绕行. 本内容尽量简单直白.步骤详细,适合数据分析入门.特别喜欢技术语言的大佬们,可自行跳过. 在上一篇:Pytho ...
- excel 银行卡信息如何批量查询
1.首先打开Excel软件,新建一个工作簿,然后点击[DIY工具箱] 2.点击[银行卡],选择[查询银行卡信息(按量付费)] 3.点击[新建] 4.在弹出工作表格录入要查询的银行卡号 5. ...
最新文章
- php用什么工具调试代码,详细介绍利用开源的DebugBar工具调试PHP代码(图文)
- 会声会影背景轨中的所有效果和素材导出为html5格式导入不,如何解决会声会影导入导出的格式问题?...
- map-reduce 、map、reduce
- 欧姆龙cp1h指令讲解_欧姆龙cp1h常用指令学习(十二)块程序
- Linux 命令行连接蓝牙
- c++打开图片查看器并查看图片
- 【场外衍生品系列】雪球结构定价研究
- Oracle VirtualBox 6.1.18 安装扩展包
- TideSec远控免杀学习二(Evasion模块+veil)
- ML机器学习基础的编程技巧:
- 投资银行理论与实务(二):证券的发行承销与交易
- 网站被恶意攻击了改怎么办?如何进行防护呢
- PHP程序员战地日记
- QNX系统的实时性分析-实时性能测试标准
- c语言stm8变量存储类型,STM8使用----STVD(COSMIC)定义变量指定其类型和位定义
- 谷歌浏览器chrome devtools 插件安装
- pip安装pytorch出现报错MemoryError
- 基于Halcon卡尺测量: Metrology批量测量矩形和圆
- 由于使用GoMonkey Patch后导致GoConvey命令不能正常运行测试用例解决方案
- 关于H264标准中变换与量化的理解