mysql快速插入大数据
说的是插入数据,这个倒像是载入数据。
上一篇,是按照插入数据来写的,就是insert into,当时插入一万条实在是太慢了,大概是286734毫秒。
insert into table values,这个values后面都跟上内容的话,大概会快一点,具体时间没测。
然后在网上发现一个牛逼的方式:LOAD DATA INFILE。这个相当快,直接载入txt文本文件中的数据。
前面写了一篇博文,是生成一个txt,向其中写入N条数据,这样就很容易获取这个数据了。写了一堆数据到txt,然后在load data infile到mysql里面。
生成数据文章地址:java写入换行符
还有一篇文章,讲load data infile的,这个是转载的,很实用。地址:mysql导入数据load data infile用法(转)
思路就这样,瞬间很简单了,插入一万条数据,时间是156毫秒,确实很快。
代码写的比较粗糙,如下:
package action; import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement; public class InsertData3 { public Connection getConnection(){
// 驱动程序名
String driver = "com.mysql.jdbc.Driver";
// URL指向要访问的数据库名scutcs
String url = "jdbc:mysql://127.0.0.1:3306/test";
// MySQL配置时的用户名
String user = "root";
// MySQL配置时的密码
String password = "12345";
Connection conn=null; try {
// 加载驱动程序
Class.forName(driver);
// 连续数据库
conn = DriverManager.getConnection(url, user, password);
}
catch (Exception e) {
System.out.println("Sorry,can`t find the Driver!");
e.printStackTrace();// TODO: handle exception
}
return conn;
} boolean insertData() throws SQLException{
InsertData3 insertData=new InsertData3();
Connection conn=insertData.getConnection();
if(!conn.isClosed())
System.out.println("begin insert!");
// statement用来执行SQL语句
Statement statement = conn.createStatement();
// 要执行的SQL语句
boolean n=false;
long a=System.currentTimeMillis();
String sql = "load data infile 'D:\\myios.txt' ignore into table t0 character set gbk fields terminated by ',' enclosed by '\"' lines terminated by '\\n' (`name`,`age`,`description`);";
n=statement.execute(sql);
long b=System.currentTimeMillis();
long c=b-a;
System.out.println("spend time:"+c);
System.out.println("insert end!");
return n;
} public static void main(String[] args) throws FileNotFoundException, SQLException {
// TODO Auto-generated method stub
String pathname="d:/myios.txt";
File file=new File(pathname);
FileOutputStream fop=new FileOutputStream(file);
String crlf=System.getProperty("line.separator");
try{
if (!file.exists()) {
file.createNewFile();
} for(int i=0;i<10000;i++){
String content="'"+i+"','data','base'"+crlf; //直接添加换行的即可
byte[] contents=content.getBytes();
fop.write(contents); } String endString="done";
byte[] ends=endString.getBytes();
fop.write(ends);
fop.flush();
fop.close(); } catch (Exception e) {
// TODO: handle exception
} InsertData3 insertData3=new InsertData3();
boolean m=insertData3.insertData();
System.out.println("boolean:"+m);
} }
mysql快速插入大数据的更多相关文章
- 【MySQL】MySQL快速插入大量数据
起源 在公司优化SQL遇到一个索引的问题,晚上回家想继续验证,无奈没有较多数据的表,于是,想造一些随机的数据,用于验证. 于是 于是动手写.由于自己不是MySQL能手,写得也不好.最后,插入的速度也不 ...
- MySql快速插入以及批量更新
MySql快速插入以及批量更新 插入: MySql提供了可以一次插入多条数据的用法: [sql] INSERT INTO tbl_name (a,b,c) VALUES(1,2,3),(4,5,6), ...
- MySQL批量插入大量数据方法
在MySQL数据库中,如果要插入上百万级的记录,用普通的insert into来操作非常不现实,速度慢人力成本高,推荐使用Load Data或存储过程来导入数据,我总结了一些方法分享如下,主要基于My ...
- 快速传输大数据(tar+lz4+pv)
快速传输大数据(tar+lz4+pv) 如果用传统SCP远程拷贝,速度是比较慢的.现在采用lz4压缩传输.LZ4是一个非常快的无损压缩算法,压缩速度在单核300MB/S,可扩展支持多核CPU.它还 ...
- C#往SQLServer中插入大数据
以前插入大数据的时候都是一条一条的插入,由于电脑配置不行,有一次17万条数据用了半个小时才插入完成,那个蛋疼啊! 前面听杨中科老师的课,发现一个很好的东西,25万条数据配置好的电脑几秒钟就完成了,那是 ...
- 解决Python向MySQL数据库插入中文数据时出现乱码
解决Python向MySQL数据库插入中文数据时出现乱码 先在MySQL命令行中输入如下语句查看结果: 只要character_set_client character_set_database ch ...
- python 向MySQL里插入中文数据
用python向MySQL中插入中文数据出错,原代码片段: 1 db = MySQLdb.connect("localhost","root","12 ...
- mysql/oracle jdbc大数据量插入优化
10.10.6 大数据量插入优化 在很多涉及支付和金融相关的系统中,夜间会进行批处理,在批处理的一开始或最后一般需要将数据回库,因为应用和数据库通常部署在不同的服务器,而且应用所在的服务器一般也不会 ...
- MySQL 快速导入大量数据 资料收集
一.LOAD DATA INFILE http://dev.mysql.com/doc/refman/5.5/en/load-data.html 二. 当数据量较大时,如上百万甚至上千万记录时,向My ...
随机推荐
- [转]Docker 为什么这么火
本文来自:Docker为什么这么火 以及此文:http://cloud.51cto.com/art/201408/447966_1.htm Docker 我的理解是,相对于 VMware 的一个分支. ...
- mysql-8 alter命令
当我们需要修改数据表名或者修改数据表字段时,就需要用到Mysql alter命令. 查看表结构: -- 以下2个命令是通用的 show columns from test_alter_tbl; des ...
- OSG和ProLand 的海面仿真
基于OSG的海面仿真 OSG中国官网 http://www.osgchina.org/ OSG-ocean的效果图如下 proland的效果图如下 下面为OSG和OCEAN的配置 配置方法转自 htt ...
- oracle事务知识点小结
DML语句流程 1 获取事务锁和ITL2 锁定候选行3 生成redo4 生成undo5 生成redo record写入log buffer并更改数据块 事务提交1 分配SCN2 更新事务表,将事务槽状 ...
- MongoDB 3.0 常见集群的搭建(主从复制,副本集,分片....)
一.mongodb主从复制配置 主从复制是mongodb最常用的复制方式,也是一个简单的数据库同步备份的集群技术,这种方式很灵活.可用于备份,故障恢复,读扩展等. 最基本的设置方式就是建立一个主节 ...
- 224. Basic Calculator + 227. Basic Calculator II
▶ 两个四则表达式运算的题目,第 770 题 Basic Calculator IV 带符号计算不会做 Orz,第 772 题 Basic Calculator III 要收费 Orz. ▶ 自己的全 ...
- jeesite快速开发平台(三)----项目文件结构与配置文件详解
转自:https://blog.csdn.net/u011781521/article/details/54893535
- IOS调试技巧:当程序崩溃的时候怎么办 xcode调试
转自:http://www.ityran.com/archives/1143 ------------------------------------------------ 欢迎回到当程序崩溃的时候 ...
- Node.js 项目打包
Node项目基于Electron打包 Electron打包打包后项目.exe程序包含在文件夹中,基于Electron打包的基础上直接打包成exe程序 参考一 参考二 需求的软件环境: NSIS 2.4 ...
- NotePad++替换行前、行后空格,替换空行
用 Notepad++ 打开,把每一个将要放在表中单元格的内容放一行(注: ^ 代表行首 $ 代表行尾) 去除行尾空格和空白行:按CTRL+H 选择正则表达式– 查找目标:\s+$ 替换为空 去除行首 ...