网站怎么做能提升ip流量,微网站下载资料怎么做,巨量引擎广告投放,网站设计网址自己的库里有索引在用insert导入数据时会变慢很多 使用事务批量导入 可以配置使用springmybatis整合的方式关闭自动提交事务#xff08;地址#xff09;#xff0c;选择批量导入每一百条导入使用list存储值传入到mybatis中 http://x125858805.iteye.com/blog/2369243 list.a…自己的库里有索引在用insert导入数据时会变慢很多 使用事务批量导入 可以配置使用springmybatis整合的方式关闭自动提交事务地址选择批量导入每一百条导入使用list存储值传入到mybatis中 http://x125858805.iteye.com/blog/2369243 list.add(bill); //自己选择插入对象if(list.size()1000) {ResultInteger num billCheckService.batchInsert(list) //将会调用下面的配置文件countnumnum.getData();for(int i 0; i num.getData();i) {countmoneylist.get(i).getPayAmount();}list.clear(); }
insert idbatchInsert parameterTypejava.util.List insert into t_pay_bill_file_detail (file_id,pay_order_no,third_trade_no)valuesforeach collectionlist itemitem indexindex 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?characterEncodingutf8allowMultiQueriestrueautoReconnecttruefailOverReadOnlyfalse,username,password);reader new BufferedReader(new InputStreamReader(file.getInputStream())); //因为自己是从前端传进来一个fileMultipartFile类型file1File.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进行按行读取并进行判断重写写入临时文件
这就又有个问题读取写入需要花费太多时间因为自己需要各种业务逻辑进行处理。目前正在努力解决中如果大家有什么好的方法可以提出来一下