文档章节

#Shell脚本 -- 批量生成测试用SQL语句

zgw06629
 zgw06629
发布于 2015/07/04 15:35
字数 305
阅读 75
收藏 2

如要往如下表中插入1000000行数据,测试索引等使用情况.

Create Table: CREATE TABLE `key_t` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `key1` int(11) DEFAULT NULL,
  `key2` int(11) DEFAULT NULL,
  `key3` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `key1` (`key1`,`key2`,`key3`)
) ENGINE=InnoDB

生成1000000行插入sql(其中key1 key2 key3的值均为0~999的随机整数):

$ echo "insert into key_t(key1,key2,key3) values(floor((rand()*1000)),floor(rand()*1000), floor(rand()*1000));" | awk '{for(i=0; i<1000000; i++) print $0}' > insert_into_key_t.sql
$ head insert_into_key_t.sql 
insert into key_t(key1,key2,key3) values(floor((rand()*1000)),floor(rand()*1000), floor(rand()*1000));
insert into key_t(key1,key2,key3) values(floor((rand()*1000)),floor(rand()*1000), floor(rand()*1000));
insert into key_t(key1,key2,key3) values(floor((rand()*1000)),floor(rand()*1000), floor(rand()*1000));

#或者通过awk直接生成好随机数据 这样导入时会快一点
$ echo "" | awk '{for(i=0; i<3; i++) print "insert into key_t(key1,key2,key3) values("int((rand()*1000))", "int(rand()*1000)", "int(rand()*1000)");"}' 
insert into key_t(key1,key2,key3) values(237, 291, 845);
insert into key_t(key1,key2,key3) values(152, 585, 193);
insert into key_t(key1,key2,key3) values(810, 173, 484);

导入到mysql表中:

$ mysql -uroot -p test < insert_into_key_t.sql
mysql> explain select count(*) from key_t where key1=1 group by key3;
+----+-------------+-------+------+---------------+------+---------+-------+------+-----------------------------------------------------------+
| id | select_type | table | type | possible_keys | key  | key_len | ref   | rows | Extra                                                     |
+----+-------------+-------+------+---------------+------+---------+-------+------+-----------------------------------------------------------+
|  1 | SIMPLE      | key_t | ref  | key1          | key1 | 5       | const |  961 | Using where; Using index; Using temporary; Using filesort |
+----+-------------+-------+------+---------------+------+---------+-------+------+-----------------------------------------------------------+
1 row in set (0.00 sec)


© 著作权归作者所有

共有 人打赏支持
zgw06629

zgw06629

粉丝 17
博文 54
码字总数 30471
作品 0
海淀
程序员
私信 提问
在mysql表中插入大量测试数据

很多时候需要在mysql表中插入大量测试数据,下面分享一个用shell脚本通过while循环批量生成mysql测试数据的方法,你只需要根据你自己的表结构来生成sql语句即可。 代码如下: #!/bin/bash i=1...

xiaocao13140
2018/06/14
0
0
批量修改MySQL存储引擎类型

最近在做mysql-cluster 7.2.7的架构测试,不过因为目前现网所用的mysql引擎类型是MyISAM,而集群所用的类型是NDBCluster。而手动一张表一张表的去ALTER去修改显然是不现实的。因为公司现网上...

小杨_Ivan
2017/02/08
0
0
Shell编程进阶篇(完结)

   1.1 for循环语句 在计算机科学中,for循环(英语:for loop)是一种编程语言的迭代陈述,能够让程式码反复的执行。 它跟其他的循环,如while循环,最大的不同,是它拥有一个循环计数器,...

侯召顺
2017/12/12
0
0
Shell脚本之for、while循环语句和case分支语句

shell作为一种脚本编程语言,同样包含循环、分支等其他程序控制结构,从而轻松完成更加复杂、强大的功能 使用for循环语句 在工作中,经常遇到某项任务需要多次执行,而每次执行仅仅是处理对象...

杨书凡
2017/12/26
0
0
67.shell脚本介绍 结构与执行 变量 date

20.1 shell脚本介绍 20.2 shell脚本结构和执行 20.3 date命令用法 20.4 shell脚本中的变量 20.1 shell脚本介绍: ~~1.shell是什么 shell是一种脚本语言 aming_linux blog.lishiming.net(she...

王鑫linux
2018/09/13
0
0

没有更多内容

加载失败,请刷新页面

加载更多

多命令链命令参数

Commands: --install <link> <name> <path> <priority> [--slave <link> <name> <path>] ... 在系统中加入一组替换项. --remove <name> <path> 从 <名......

Pulsar-V
29分钟前
0
0
【转】go get命令使用socket代理

由于某些不可描述的原因,国内使用go get命令安装某些包的时候会超时导致失败,比如net包、sys包、tools包等。第一种解决办法就是自己从git上下载后添加链接到GOPATH中,比如: 1234...

yiduwangkai
30分钟前
0
0
Windows同步对象Event和Linux的条件变量

最近在看一些同步对象模拟的东东,特别对在Windows下如何模拟条件变量折腾了很久。 1 Windows同步对象Event 微软有一个很有意思的同步对象,某种程度上和Linux的条件变量很相似。但秉承微软一...

shzwork
38分钟前
1
0
从上往下打印出二叉树的每个节点,同层节点从左至右打印。

//第一种做法 public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList <Integer> li=new ArrayList<Integer>(); ArrayList <TreeN......

南桥北木
48分钟前
1
0
linux 服务管理 Crontba、Ntpdate、Logrotate、Supervisor

crond linux 系统则是由 cron (crond) 这个系统服务来控制的。Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的。 另外, 由于使用者自己也可以设置计划任务,所以,...

狼王黄师傅
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部