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

18de642960578b89aca818d9f0f7975c.png

背景及目标:现有数据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 'rn' 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. 将上述多个文件扩充10倍并合并到同一个文件,并且在第一列加入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);

writeFile11(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()+"rn");

}

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 stub

BufferedWriter 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语句,估计会疯掉!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/427792.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows键盘在mac上怎么识别_Mac电脑怎么使用pc键盘?

苹果电脑一般需要使用配套的mac键盘&#xff0c;毕竟按键和普通pc键盘不一样。但是总会遇到一些情况&#xff0c;比如配套的mac键盘坏了&#xff0c;而刚好有一个pc键盘&#xff0c;那么这时候苹果电脑要怎么用pc键盘呢&#xff1f;这边小编跟大家介绍mac电脑连接pc键盘以及设置…

LOJ#6002. 「网络流 24 题」最小路径覆盖

模板。 1 #include<iostream>2 #include<cstring>3 #include<cstdio>4 //#include<time.h>5 //#include<complex>6 //#include<set>7 //#include<queue>8 #include<algorithm>9 #include<stdlib.h>10 using namespace s…

zabbix mysql设置中文乱码_解决zabbix监控因php问题导致图形界面中文乱码方法

解决因编译php中添加了-enable-gd-jis-conv选项导致Zabbix监控系统图形界面中文乱码问题现象&#xff1a;php编译参数&#xff1a;说明&#xff1a;如果PHP编译时启用–enable-gd-jis-conv选项的话&#xff0c;那么非ASCII字符(例如汉字、拼音、希腊文和箭头) 会被当成EUC-JP编…

熟悉常用的HDFS操作

一、Hadoop提供的Shell命令完成相同任务&#xff1a; 在本地Linux文件系统的“/home/hadoop/”目录下创建一个文件txt&#xff0c;里面可以随意输入一些单词.在本地查看文件位置&#xff08;ls&#xff09;在本地显示文件内容使用命令把本地文件系统中的“txt”上传到HDFS中的当…

mysql 低端_mysql入门

相关了解(重点内容从标题一开始)目前主流数据库有:sqlserver, mysql, Qracle, SQLite, Access, MS SQL Server等, 我主要说的是mysql;以下几点需要记住!!!SQL包括了所有对数据库的操作, 主要由4个部分组1. 数据库定义语言(DDL): 用于定义和管理数据库对象, 包括数据库, 基本表,…

阿里云服务器由于被检测到对外攻击,已阻断该服务器对其它服务器端口的访问...

问题&#xff1a; (系统&#xff1a;CentOS 7.2 ) 前几天在阿里云服务器安装了Redis, 刚开始没有设置redis密码, 后台阿里云发送多次邮件提示如下&#xff1a; 经过几次波折才发现并彻底解决了问题&#xff1a; 原因&#xff1a; 估计是因为 Redis服务开启时没有设置密码 &…

opencv rect画旋转矩形_在opencv c中绘制旋转的矩形

既然你想要一个填充的矩形,你应该使用fillConvexPoly&#xff1a;// Include center point of your rectangle, size of your rectangle and the degrees of rotationvoid DrawRotatedRectangle(cv::Mat& image, cv::Point centerPoint, cv::Size rectangleSize, double ro…

批量找注入 python3+sqlmap结合

注入一直都是用sqlmap 导致本来就不怎么精通的手工注入现在就忘的一干二净 想实战练习 却一时又找不到有注入的网站 于是便有了这篇文章 想找个批量获取域名链接的工具 但都是只是获取域名而已 都没获取后面的参数 于是自己写了个只获取bing前10页的结果 输入q 结束循环…

python collections模块_Python 的collections模块

前言&#xff1a;collections是实现了特定目标的容器&#xff0c;以提供python标准内建容器dict,list,set和tuple的替代选择。CounterCounter是一个dict子类&#xff0c;主要是用来对你访问的对象的频率进行计数import collections#统计字符出现的次数test1 collections.Count…

C# VS2017 winForm 使tableLayoutPanel 不闪烁

//设置tablelayoutpanel控件的DoubleBuffered 属性为true&#xff0c;这样可以减少或消除由于不断重绘所显示图面的某些部分而导致的闪烁 private void Form_PrintPreview_Load(object sender, EventArgs e){//开启双缓冲&#xff0c;改善TableLayoutPanel闪烁问题TableLayoutP…

java 继承调用_【JAVA学习】继承中函数调用机制

类(类的对象)在调用函数时&#xff0c;究竟哪一个函数被调用&#xff0c;是存在特定的机制的&#xff0c;现在我们来梳理下其步骤。步骤一&#xff1a;当其调用一个函数的时候&#xff0c;编译器根据其声明的变量类型和调用的函数名字找到所有此“类”和其父类中具有同名的函数…

golang 反射

参考&#xff1a;|--http://blog.51cto.com/speakingbaicai/1707637 |--https://studygolang.com/articles/6324 反射是在golang程序运行时检查变量所具有类型的一种机制。由于反射可以得出关于变量结构的数据&#xff08;即“关于数据的数据”&#xff09;&#xff0c;所以这也…

java硬件编程_关于JAVA并发编程你需要知道的——硬件篇

无论程序语言如何千变万化&#xff0c;他们都深深地根植于目前的计算机体系结构。左图是intel CPU的三级高速缓存设计&#xff0c;由于高速缓存对程序员基本不可见&#xff0c;因此可以抽象为右图。缓存的设计首先还是先谈谈左图。L1-cache分为两部分&#xff0c;i-cache存储指…

ELF 动态链接 so的动态符号表(.dynsym)

静态链接中有一个专门的段叫符号表 -- “.symtab”(Symbol Table)&#xff0c; 里面保存了所有关于该目标文件的符号的定义和引用。 动态链接中同样有一个段叫 动态符号表 -- “.dynsym”(Dynamic Symbol) &#xff0c; 但.dynsym 相对于 .symtab 只保存了与动态链接相关的导入…

java线程池怎么创建_java中的线程池,如何创建?

Java中的线程池它是线程的容器&#xff0c;或者(换句话说&#xff0c;它是具有执行任务能力的线程的集合)。我们可以使用ThreadPool框架来定位(或实现)线程池。线程池可以包含多个线程。每当我们执行任何任务时&#xff0c;线程就会从线程池中出来并完成该任务&#xff0c;然后…

JAVA 基础3-数组

一.数组的概念 数组可以看成是多个数据类型的集合&#xff0c;是对这些数据进行统一的管理&#xff1b; 数组的变量是引用类型&#xff0c;数组本身是对象&#xff0c;数组中的每个元素相当于该对象的成员变量&#xff1b; 数组的元素可以是任何数据类型&#xff0c;包括基础数…

net Core做一个webApi的简单实例

用NetCore 和Dapper 和mySql做一个简单的实例&#xff0c; 一准备工作 1&#xff1a;VS2017windos系统&#xff0c;也可以用其他的操作系统和工具 2&#xff1a;一台Cenetos的虚拟机或者虚拟机 二&#xff1a;开始 1&#xff1a;用微软官方的netCore的ToDo项目改造&#xff0c;…

mysql binlog sql统计_mysql的binlog详解

binlog是mysql记录操作的二进制日志文件,有三种格式可选,但是老旧的SBR已经不适合现在大多数业务需求,所以大多数都建议用MBR和RBR,即mixed或row,而解析他的原因,几乎都只有一个,就是恢复数据库,或者是反编译来恢复数据库,目的都是一样.以下是基于mysql5.6的mysqlbinlog来描述的…

Android项目实战(二十二):启动另一个APP or 重启本APP

Android项目实战&#xff08;二十二&#xff09;&#xff1a;启动另一个APP or 重启本APP 原文:Android项目实战&#xff08;二十二&#xff09;&#xff1a;启动另一个APP or 重启本APP一、启动另一个APP 目前公司项目需求&#xff0c;一个主APP,需要打开某些小APP&#xff0c…

mysql 查询两张表结构相同的数据库_利用反射处理多个表结构相同的数据的查询和数据库表的关联...

最近做一个项目&#xff0c;需要对人口数据进行查询&#xff0c;但是人口数据分布在不同的街道表中&#xff0c;首先进行了数据表结构的统一&#xff0c;每个数据表以街道名开头&#xff0c;然后其他的名字都一样前期将各个表中的字段也进行了统一抽象出一张字典表将街道编号和…