mysql 造1亿条记录的单表--大数据表
读写文件
背景及木:现有数据1000w单表,为压力测试准备1亿条数据。
步骤:
1.将1000w条记录,除id外都导入到多个文件中:
//DELIMITER DROP PROCEDURE if EXISTS createManyTable; create PROCEDURE createManyTable() BEGIN DECLARE i int; DECLARE fileName VARCHAR(30); set i=1;while i<251 DO SET fileName=CONCAT('f_log_',i,'.txt');SET @STMT :=CONCAT("select `xx`,`xx`,`xx`,`xx`,.... into outfile 'temp/",fileName, "' lines terminated by '\r\n' from `f_log` WHERE id>= ",40000*(i-1)," AND id< ",40000*i);PREPARE STMT FROM @STMT; EXECUTE STMT;set i=i+1; end while; END; //DELIMITER CALL createManyTable();
2. 将上述多个文件合并到同一个文件,并且在第一列加入id列:
public static void main(String[] args) throws IOException {int i=10000000;int step=40000;File out=new File("E:/data/f_log_data.txt");for(int k=1;k<251;k++){File file=new File("E:/data/temp/f_log_"+k+".txt");StringBuffer sb=new StringBuffer();if(file.exists()){sb=readFile(file,i+step*k);writeFile(out,sb);}}}public static StringBuffer readFile(File file,int start) throws IOException{StringBuffer sb=new StringBuffer();BufferedReader reader=new BufferedReader(new FileReader(file));String line=""; while(line != null){line = reader.readLine();if(line == null){break;}if(line.trim().equalsIgnoreCase("")){continue;}start++;sb.append(start+"\t"+line.trim()+"\r\n");}reader.close();return sb;}public static void writeFile(File file,StringBuffer sb) throws IOException{BufferedWriter writer = new BufferedWriter(new FileWriter(file, true));writer.write(sb.toString());writer.close();}public void writeFile11() throws IOException{// TODO Auto-generated method stubBufferedWriter writer = new BufferedWriter(new FileWriter(new File("D:/driver/data.txt"), true));for(int i=0;i<1000000;i++){if(i%10==0){writer.write("赵"+(i/10)+"\t"+ (int)(Math.random()*100)+"\n");}if(i%10==1){writer.write("钱"+(i/10)+"\t"+ (int)(Math.random()*100)+"\n");}if(i%10==2){writer.write("孙"+(i/10)+"\t"+ (int)(Math.random()*100)+"\n");}if(i%10==3){writer.write("李"+(i/10)+"\t"+ (int)(Math.random()*100)+"\n");}if(i%10==4){writer.write("郑"+(i/10)+"\t"+ (int)(Math.random()*100)+"\n");}if(i%10==5){writer.write("吴"+(i/10)+"\t"+ (int)(Math.random()*100)+"\n");}if(i%10==6){writer.write("周"+(i/10)+"\t"+ (int)(Math.random()*100)+"\n");}if(i%10==7){writer.write("王"+(i/10)+"\t"+ (int)(Math.random()*100)+"\n");}if(i%10==8){writer.write("张"+(i/10)+"\t"+ (int)(Math.random()*100)+"\n");}if(i%10==9){writer.write("刘"+(i/10)+"\t"+ (int)(Math.random()*100)+"\n");}}writer.close();}
3. 将合并后的文件导入到数据表中:
load data local infile '/tmp/finance_log_data.txt' into table f_log(`id`,`xx`,
`xx`,.........................
);
注意事项:开始考虑使用存储过程来逐步导入到数据表中,但load data命令不能在存储过程中使用。
另外,数据的合并也可以以shell脚本完成,但习惯使用java了,因此以java来完成,显得比较复杂。不过,可以随便复习一下java的读写文件,有算不错的经历。
Q&A
时间问题:生成1亿条数据(在有索引的情况下),用时3个小时。如果使用insert语句,估计会疯掉!
转载于:https://www.cnblogs.com/davidwang456/p/4691549.html
mysql 造1亿条记录的单表--大数据表相关推荐
- mysql一个表几亿数据_如何在mysql 造1亿条记录的大容量数据表?
背景及目标:现有数据1000w单表,为压力测试准备1亿条数据. 步骤: 1.将1000w条记录,除id外都导入到多个文件中: //DELIMITER DROP PROCEDURE if EXISTS ...
- 4000GB、数百亿条个人信息泄露!大数据行业知名企业数据堂被查
个人信息安全对我们每个人来说都很重要,但却面临着巨大的威胁. 知名大数据企业涉嫌侵犯数百亿条公民个人信息 7 月 8 日,据新华网"新华视点"报道,山东日前成功破获一起特大侵犯公民 ...
- mysql一张表100亿条数据_一个表有100亿条记录,如何优化
我们的数据库还在设计阶段.我们预计数据量将会很大,一年的时间里,一张表,就会产生100亿条数据,表结构,如下id,userid,createddate,等等正常情况下,100亿条记录如果都存在一个表里 ...
- mysql 万亿数据_sql-server – 哪个数据库可以处理数十亿/数万亿条记录的存储?...
我们正在研究开发一种捕获和分析netflow数据的工具,我们收集了大量的数据.每天我们捕获大约14亿个流记录,这些记录在json格式中看起来像这样: { "tcp_flags": ...
- mysql十亿_Mysql:表中有数十亿条记录
我需要在Mysql表中保存约78亿条记录.该表既读写又密集.我必须每小时至少保留20亿记录的插入率.而在桌子上搜索不应超过10秒钟. 我们有一个UI,用户可以根据不同的colums属性进行搜索. 大多 ...
- MySQL 快速构造一亿条记录的表
在上一次朋友问我如何快速构造一亿条记录的表后,我理出了实行的办法,见:https://blog.csdn.net/csdnhsh/article/details/95759379,但是因为录入一亿 ...
- 将PostgreSQL数据库扩展到每个月12亿条记录的经验教训
这不是我第一次使用大型数据集.我为最大的英国公共Wi-Fi供应商设计的认证和产品管理数据库也有巨大的容量.我们每天跟踪数百万设备的身份认证.然而,该项目有资金,允许我们选择任何硬件.任何支持服务以及聘 ...
- 14亿条记录,12c 做不到2小时内变更表结构字段类型?
导读:本文详细讲述Oracle 12c 在2小时内完成一张14亿条记录的表结构字段类型变更的过程,希望可以帮到工作中的大家,如有任何疑问,欢迎在本文的评论区交流讨论. 概述 Oracle大表在线修改的 ...
- mysql中如何将一个表中的部分记录合并,MySQL数据库将多条记录的单个字段合并成一条记录_MySQL...
bitsCN.com MySQL数据库将多条记录的单个字段合并成一条记录 MySQL数据库将多条记录的单个字段合并成一条记录的操作是本文 我们主要要介绍的内容,接下来就让我们一起来了解一下这部分内容吧 ...
最新文章
- python3 UDP TCP 调试回射命令行
- python打架动态图_20个GIF动图解释令程序员崩溃的瞬间 - 里维斯社
- html5与跨平台开发,HTML5应用与跨平台应用开发
- Java虚拟机 —— 内存和线程
- 客户端与服务器之间通信收不到信息——readLine()
- 设计模式之GOF23责任链模式
- 安装nltk,textacy库
- dnf连不上服务器删什么文件,DNF客户端又出问题?其实是这个文件惹的祸,删除就好了!...
- 2021年下半年软件设计师考试下午题
- 抖音的服务器究竟有多大?
- 神经网络是什么,神经网络具体有什么用?
- Excel中在方框里打钩
- 一点资讯战略升级:否定百度收购同时与微博牵手
- 前端学习与工作中常用网站推荐
- html播放rtsp低延时(局域网测试500ms左右)
- 利用word2vec、textCNN、jieba对事故文本多分类及致因修复(三维向量)
- 蓝牙BLE芯片PHY6222之I2C主从通信
- 喜讯 | 经纬恒润荣获一汽红旗 “攻坚克难·旗志奖”
- 基于STM32的OLED显示
- linux启动mysql1820_linux mysql二进制不用Cmake安装方法
热门文章
- java创建对象的过程_Java创建对象的过程
- python运行不了程序代码_python怎么运行代码程序
- java基础学完就直接学ssm_java基础学习笔记3(SSM基础)
- beanpostprocessor使用场景_Spring因动态代理使用不注意导致的诡异现象
- python进行数据分析,学习笔记 第8章(1)
- 声明及赋值_重述《Effective C++》二——构造、析构、赋值运算
- 机器学习——推荐算法
- python的模块、包、库区别。导入包/模块的方式
- py2neo 基本用法
- tensorflow 最小二乘拟合详细代码注释