读写文件

背景及木:现有数据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亿条记录的单表--大数据表相关推荐

  1. mysql一个表几亿数据_如何在mysql 造1亿条记录的大容量数据表?

    背景及目标:现有数据1000w单表,为压力测试准备1亿条数据. 步骤: 1.将1000w条记录,除id外都导入到多个文件中: //DELIMITER DROP PROCEDURE if EXISTS ...

  2. 4000GB、数百亿条个人信息泄露!大数据行业知名企业数据堂被查

    个人信息安全对我们每个人来说都很重要,但却面临着巨大的威胁. 知名大数据企业涉嫌侵犯数百亿条公民个人信息 7 月 8 日,据新华网"新华视点"报道,山东日前成功破获一起特大侵犯公民 ...

  3. mysql一张表100亿条数据_一个表有100亿条记录,如何优化

    我们的数据库还在设计阶段.我们预计数据量将会很大,一年的时间里,一张表,就会产生100亿条数据,表结构,如下id,userid,createddate,等等正常情况下,100亿条记录如果都存在一个表里 ...

  4. mysql 万亿数据_sql-server – 哪个数据库可以处理数十亿/数万亿条记录的存储?...

    我们正在研究开发一种捕获和分析netflow数据的工具,我们收集了大量的数据.每天我们捕获大约14亿个流记录,这些记录在json格式中看起来像这样: { "tcp_flags": ...

  5. mysql十亿_Mysql:表中有数十亿条记录

    我需要在Mysql表中保存约78亿条记录.该表既读写又密集.我必须每小时至少保留20亿记录的插入率.而在桌子上搜索不应超过10秒钟. 我们有一个UI,用户可以根据不同的colums属性进行搜索. 大多 ...

  6. MySQL 快速构造一亿条记录的表

      在上一次朋友问我如何快速构造一亿条记录的表后,我理出了实行的办法,见:https://blog.csdn.net/csdnhsh/article/details/95759379,但是因为录入一亿 ...

  7. 将PostgreSQL数据库扩展到每个月12亿条记录的经验教训

    这不是我第一次使用大型数据集.我为最大的英国公共Wi-Fi供应商设计的认证和产品管理数据库也有巨大的容量.我们每天跟踪数百万设备的身份认证.然而,该项目有资金,允许我们选择任何硬件.任何支持服务以及聘 ...

  8. 14亿条记录,12c 做不到2小时内变更表结构字段类型?

    导读:本文详细讲述Oracle 12c 在2小时内完成一张14亿条记录的表结构字段类型变更的过程,希望可以帮到工作中的大家,如有任何疑问,欢迎在本文的评论区交流讨论. 概述 Oracle大表在线修改的 ...

  9. mysql中如何将一个表中的部分记录合并,MySQL数据库将多条记录的单个字段合并成一条记录_MySQL...

    bitsCN.com MySQL数据库将多条记录的单个字段合并成一条记录 MySQL数据库将多条记录的单个字段合并成一条记录的操作是本文 我们主要要介绍的内容,接下来就让我们一起来了解一下这部分内容吧 ...

最新文章

  1. python3 UDP TCP 调试回射命令行
  2. python打架动态图_20个GIF动图解释令程序员崩溃的瞬间 - 里维斯社
  3. html5与跨平台开发,HTML5应用与跨平台应用开发
  4. Java虚拟机 —— 内存和线程
  5. 客户端与服务器之间通信收不到信息——readLine()
  6. 设计模式之GOF23责任链模式
  7. 安装nltk,textacy库
  8. dnf连不上服务器删什么文件,DNF客户端又出问题?其实是这个文件惹的祸,删除就好了!...
  9. 2021年下半年软件设计师考试下午题
  10. 抖音的服务器究竟有多大?
  11. 神经网络是什么,神经网络具体有什么用?
  12. Excel中在方框里打钩
  13. 一点资讯战略升级:否定百度收购同时与微博牵手
  14. 前端学习与工作中常用网站推荐
  15. html播放rtsp低延时(局域网测试500ms左右)
  16. 利用word2vec、textCNN、jieba对事故文本多分类及致因修复(三维向量)
  17. 蓝牙BLE芯片PHY6222之I2C主从通信
  18. 喜讯 | 经纬恒润荣获一汽红旗 “攻坚克难·旗志奖”
  19. 基于STM32的OLED显示
  20. linux启动mysql1820_linux mysql二进制不用Cmake安装方法

热门文章

  1. java创建对象的过程_Java创建对象的过程
  2. python运行不了程序代码_python怎么运行代码程序
  3. java基础学完就直接学ssm_java基础学习笔记3(SSM基础)
  4. beanpostprocessor使用场景_Spring因动态代理使用不注意导致的诡异现象
  5. python进行数据分析,学习笔记 第8章(1)
  6. 声明及赋值_重述《Effective C++》二——构造、析构、赋值运算
  7. 机器学习——推荐算法
  8. python的模块、包、库区别。导入包/模块的方式
  9. py2neo 基本用法
  10. tensorflow 最小二乘拟合详细代码注释