自己的库里有索引在用insert导入数据时会变慢很多

  使用事务+批量导入

    可以配置使用spring+mybatis整合的方式关闭自动提交事务(地址),选择批量导入每一百条导入使用list存储值传入到mybatis中

      http://x125858805.iteye.com/blog/2369243

          list.add(bill); //自己选择插入对象
if(list.size()==1000) {
Result<Integer> num = billCheckService.batchInsert(list); //将会调用下面的配置文件
countnum+=num.getData();
for(int i = 0; i < num.getData();i++) {
countmoney+=list.get(i).getPayAmount();
}
list.clear();
}
<insert id="batchInsert" parameterType="java.util.List" >
insert into t_pay_bill_file_detail (file_id,pay_order_no,third_trade_no)
values
<foreach collection="list" item="item" index="index" separator=",">
(
#{item.fileId},
#{item.payOrderNo},
#{item.thirdTradeNo}
)
</foreach>
</insert>

或者使用原始的jdbc关闭事务进行批量提交

conn.setAutoCommit(false); //一句话就可以啦

          ps.addBatch();
if(list.size()==1000) {int[] num = ps.executeBatch();
conn.commit();
          }

前两个自己试验的时候大概花的时间都一样,自己又试验了一个按文件处理的语句进行jdbc插入,是最快的方式了,可以在SQL后面制定插入固定字段的值,前提是文件的顺序必须是一样的,注意事项:

character set utf8 --------这里是utf8不是utf-8;
fields terminated by ','----文件中每个字段是按‘,’分割的,如.csv文件
lines terminated by '\\n'---每行代表一个记录;
        Class.forName("com.mysql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://192.168.2.18:3306/fi?characterEncoding=utf8&allowMultiQueries=true&autoReconnect=true&failOverReadOnly=false",
username,password);
reader = new BufferedReader(new InputStreamReader(file.getInputStream())); //因为自己是从前端传进来一个file(MultipartFile类型)
file1=File.createTempFile("gjy",".txt",new File("E:")); //E:后面不用写//来代表在盘符下,SQL会默认缺省的,不然添加后报错
       String sql = "load data local infile "+'"'+ file1.getAbsolutePath()+'"'
+" into table t_pay_bill_file_detailcopy character set utf8 fields terminated by ',' "
+ "lines terminated by '\\n' "
+ "(`file_id`,`trans_type`,`pay_channel_id`,`pay_order_no`,`third_trade_no`,`trans_date`,`pay_amount`) ";
ps = conn.prepareStatement(sql);
ps.execute();
       file1.deleteOnExit(); //程序退出时删除临时文件

这个方式虽然快是快,但是对文件的要求太高,客户不可能对程序理解,只知道传进来文件,所以自己取到file对象都会对file进行按行读取并进行判断重写写入临时文件

这就又有个问题,读取写入需要花费太多时间,因为自己需要各种业务逻辑进行处理。目前正在努力解决中,如果大家有什么好的方法可以提出来一下!

ps:关注一下本人公众号,每周都有新更新哦!

对大数据的批量导入MySQL数据库的更多相关文章

  1. SpringMVC文件上传 Excle文件 Poi解析 验证 去重 并批量导入 MYSQL数据库

    SpringMVC文件上传 Excle文件 Poi解析并批量导入 MYSQL数据库  /** * 业务需求说明: * 1 批量导入成员 并且 自主创建账号 * 2 校验数据格式 且 重复导入提示 已被 ...

  2. Weka里如何将arff文件或csv文件批量导入MySQL数据库(六)

    这里不多说,直接上干货! 前提博客是 Weka中数据挖掘与机器学习系列之数据格式ARFF和CSV文件格式之间的转换(四) 1.将arff文件批量导入MySQL数据库 我在这里,arff文件以Weka安 ...

  3. 从Excel中读取数据并批量写入MySQL数据库(基于MySQLdb)

    一.Excel内容如下,现在需要将Excel中的数据全部写入的MySQL数据库中: 二.连接MySQL的第三方库使用的是“MySQLdb”,代码如下: # -*- coding:utf-8 -*-im ...

  4. Java实现数据批量导入mysql数据库

    本文完全照搬别人的. 原文标题:Java实现数据批量导入数据库(优化速度-2种方法) 原文地址:https://blog.csdn.net/qy20115549/article/details/526 ...

  5. 使用solr批量导入mysql数据库,以及Unable to read: dataimport.properties等坑

    折腾了一下午终于成功了!先放一张成功图: 成功把mysql的数据添加进去了,我这里是整合了tomcat9,整合步骤挺麻烦的,百度一大堆! 这里主要介绍批量导入数据,这里有些坑,所以记录一下: 步骤: ...

  6. sql文件批量导入mysql数据库

    有一百多个sql文件肿么破?一行一行地导入数据库肯定是极其愚蠢的做法,但是我差点就这么做了... 网上首先找到的方法是:写一个xxx.sql文件,里边每一行都是source *.sql ...,之后再 ...

  7. JAVA大数据项目+整理的Mysql数据库32条军规

    http://www.jianshu.com/users/a9b2d43bb94e/latest_articles

  8. 从Excel中读取数据并批量写入MySQL数据库(基于pymysql)

    一.Excel内容时这样的: 二.最初的代码是这样的: # -*- coding:utf-8 -*-import pymysqlfrom xlrd import open_workbook class ...

  9. 在Linux环境下,将Solr部署到tomcat7中,导入Mysql数据库数据, 定时更新索引

    什么是solr solr是基于Lucene的全文搜索服务器,对Lucene进行了扩展优化. 准备工作 首先,去下载以下软件包: JDK8:jdk-8u60-linux-x64.tar.gz TOMCA ...

随机推荐

  1. mysql中int、bigint、smallint 和 tinyint的区别与长度的含义【转】

    最近使用mysql数据库的时候遇到了多种数字的类型,主要有int,bigint,smallint和tinyint.其中比较迷惑的是int和smallint的差别.今天就在网上仔细找了找,找到如下内容, ...

  2. Excel 操作总结

    1.excel 表格中换行:Alt+Enter; 2.Excel2003以上版本设置下拉菜单     DATA->Data Validation ->Data Validation -&g ...

  3. MySQL经典错误

    本文目录: Top 1:Too many connections(连接数过多,导致连接不上数据库,业务无法正常进行)Top 2:(主从复制报错类型)Top 3:MySQL安装过程中的报错Top 4:数 ...

  4. 自动化测试基础篇--Selenium unittest简介

    一.什么是unittest unittest是Python单元测试框架,类似于JUnit框架. unittest中有4个重要的概念:test fixture, test case, test suit ...

  5. The associated COM server does not support ActiveX Document embedding

    winfrom 通过dsoframer实现读取excel文件报错: System.Reflection.TargetInvocationException: Exception has been th ...

  6. 关于cocostudio动态添加控件触摸响应无效的学习

    time:2015/04/19 1. 描述 * 把studio制作的ui加载之后,动态添加事件(比如说,单点触摸),结果回调函数(eg:onTouchBegan等)根本没有响应! * 另外,网上有朋友 ...

  7. python基础语法2

    一.顺序结构 顺序结构就是从上而下的一步一步的执行每行程序语句. 二.分支结构(if) 形式1: if 条件: pass 形式2: if 条件: pass else: pass 形式3: if 条件: ...

  8. Directed Graphs

    有向图 Introduction 就是边是有方向的,像单行道那样,也有很多典型的应用. 点的出度指从这个点发出的边的数目,入度是指向点的边数.当存在一条从点 v 到点 w 的路径时,称点 v 能够到达 ...

  9. SOJ 4590 简单模拟

    Description Gandtom把家搬到了一个交通便利的地方.今天来通知他的朋友Sidney,但是Sidney好像不在家,出门了,敲门没有人开门.  于是Gandtom把家里的地址写了下来.他担 ...

  10. 【[USACO08JAN]haybale猜测Haybale Guessing】

    抄题解.jpg 完全完全不会啊,这道题简直太神了 不过抄题解可真开心 首先这道题目保证了每一个位置上的数都是不同的,那么就能得到第一种判断不合法的方式 如果两个区间的最小值一样,但是两个区间的交集为空 ...