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 ...
随机推荐
- Spring MVC @ResponseBody和@RequestBody使用
@ResponseBody用法: 作用:该注解用于将Controller的方法返回的对象,根据HTTP Request Header的Accept的内容,通过适当的HttpMessageConvert ...
- 适应移动端 iPhone & Android 微信页面的一些css属性
1.-webkit-tap-highlight-color -webkit-tap-highlight-color:rgba(0,0,0,0);//透明度设置为0,去掉点击链接和文本框对象时默认的灰色 ...
- 372. Super Pow.txt
▶ 指数取模运算 ab % m ▶ 参考维基 https://en.wikipedia.org/wiki/Modular_exponentiation,给了几种计算方法:暴力计算法,保存中间结果法(分 ...
- python中模拟进行ssh命令的执行
在进行socket编程的时候,可以实现远程执行命令,然后返回相关的结果,但是这种...很容易就把服务器搞挂了. 在这里需要用到commands模块,commands模块中有一个方法为getstatus ...
- JS执行删除前的判断
JS执行删除前如何实现判断. 一. <script> function del(){ if(confirm("确认删除吗")){ alert("yes&quo ...
- leetcode532
public class Solution { public int FindPairs(int[] nums, int k) { var pair = new Dictionary<strin ...
- [jOOQ中文]3. 数据库版本管理工具Flyway
https://segmentfault.com/a/1190000010526452 在执行数据库迁移时,我们推荐使用jOOQ与Flyway - 数据库迁移轻松. 在本章中,我们将简单的来使用这两个 ...
- 记一次结巴分词.net core 2.0版 nuget发布过程
最近用到分词考虑很久,选用了结巴分词,原因见博客Lucene.net(4.8.0) 学习问题记录五: JIEba分词和Lucene的结合,以及对分词器的思考 既然选好了,难就开始行动吧 . 查了.ne ...
- less gradient-vertical 方法的实现
// Vertical gradient using CSS where possible, and base64-encoded SVG for IE9 (enables use of this i ...
- WSAStartup function
[WSAStartup function] Parameters wVersionRequested [in] The highest version of Windows Sockets speci ...