关于插入MySQL测试数据,这里介绍两种方法:

选择优先级(结合PHP生成测试数据 > 使用存储过程 )

  • 使用存储过程(建议测试数据小于1000条使用该方法)

 具体代码如下:

 创建表:

 mysql> create table TB1(
-> id int auto_increment not null,
-> name varchar(30) not null default 5,
-> primary key(id));
Query OK, 0 rows affected (0.02 sec)

 创建存储过程:

 mysql> delimiter $
mysql> create procedure testdata()
-> begin
-> declare i int default 1;
-> while(i<=1000) do
-> insert into TB1(name) values(concat("test",i));
-> set i=i+1;
-> end while;
-> end;
-> $
Query OK, 0 rows affected (0.02 sec) mysql> delimiter ;

 调用存储过程

 mysql> call testdata();
Query OK, 1 row affected (5.13 sec)

 PS:上图可以看出1000条数据的生成消耗了5.13秒,特别的慢!

  • 结合PHP生成测试数据

 testdata.php内容:

 <?php
// 使用方法:php testdata.php root 123456
// 第一个参数为数据库用户名,第二个参数为数据库密码 // 一些设置项
set_time_limit(0);
$_ROWS = 100000; # 要插入的行数
$_DATABASE = "DB1"; # 库名
$_TABLE = "TB1"; # 表名
$_KV = array(
"name" => "test", # 字段名 => 字段前缀
); $t1 = microtime(true);
// 生成SQL语句
$sqlString = "INSERT INTO {$_TABLE} (". implode(",", array_keys($_KV)) .") VALUES ";
$arr = $valArr = array();
while ($_ROWS > 0) {
foreach($_KV as $k => $v) {
$arr[] = $v.$_ROWS;
}
$valArr[] = "('". implode("','", $arr) . "')";
$_ROWS--;
$arr = array();
}
$sqlString .= implode(',', array_values($valArr)) . ";"; // 导入数据库
list($scriptname, $dbuser, $dbpassword) = $argv;
$con = mysqli_connect("127.0.0.1", $dbuser, $dbpassword, $_DATABASE) or die("error connecting") ;;
mysqli_query($con, $sqlString);
mysqli_close($con);
$t2 = microtime(true);
echo round($t2-$t1, 3) . " sec\r\n";

  

 执行脚本

 [root@desktop]# php testdata.php root 123456
0.48 sec

 PS:通过两种方法的对比,使用PHP脚本导入100000条测试数据只花了0.48秒,可以看出该方法执行的速度远比使用存储过程快。

MySQL如何插入测试数据的更多相关文章

  1. mysql批量插入测试数据

    一.建表语句 use test; create table student( Sno ) NOT NULL COMMENT '学号', Sname ) NOT NULL COMMENT '姓名', S ...

  2. mysql批量插入简单测试数据

    mysql批量插入简单测试数据 # 参考网址: https://www.2cto.com/database/201703/618280.html 1.mysql创建测试表 CREATE TABLE ` ...

  3. MYSQL批量插入数据库实现语句性能分析

    假定我们的表结构如下 代码如下   CREATE TABLE example ( example_id INT NOT NULL, name VARCHAR( 50 ) NOT NULL, value ...

  4. MYSQL批量插入数据库实现语句性能分析【转】 批量插入!程序里面对于数据库插入的功能尽量用【异步处理+批量插入+(事务)】

    假定我们的表结构如下 代码如下   CREATE TABLE example (example_id INT NOT NULL,name VARCHAR( 50 ) NOT NULL,value VA ...

  5. mysql 添加大量测试数据

    mysql 添加大量测试数据 场景 针对于大量测试数据插入,检测sql执行速度 第一步:建表 // 测试表 CREATE TABLE user ( id int(11) NOT NULL AUTO_I ...

  6. MAC下 mysql不能插入中文和中文乱码的问题总结

    MAC下 mysql不能插入中文和中文乱码的问题总结 前言 本文中所提到的问题解决方案,都是基于mac环境下的,但其他环境,比如windows应该也适用. 问题描述 本文解决下边两个问题: 往mysq ...

  7. mysql不能插入中文

    mysql不能插入中文 解决办法: 1.打开终端,连接数据库  mysql -u root -p; 2.输入 satus; 查看状态 3.输入 set char set 'gbk'; 4.如果是已有的 ...

  8. Mysql大量插入随机数据方法--存储过程

    创建测试表: mysql)); 创建存储过程: mysql> delimiter // mysql> create procedure rand_data(in num int) -> ...

  9. MySQL大批量插入数据

    MySQL大批量插入数据 1. 对于Myisam类型的表,可以通过以下方式快速的导入大量的数据. ALTER  TABLE  tblname  DISABLE  KEYS; loading  the  ...

随机推荐

  1. git的使用,eclipse操作(待更新)

    使用eclipse将项目上传到git私有服务器或github服务器: 1.配置个人信息: 2.配置eclipse私钥公钥: 上传公钥到仓库: 修改仓库中的公钥名称: 3.提交代码 一个仓库只能上传一个 ...

  2. iOS APP内购

    看到网上文章一大把,看了这个觉得挺不错的,谢谢 iOS大全 公众平台; 原文:http://mp.weixin.qq.com/s?__biz=MzAxMzE2Mjc2Ng==&mid=2652 ...

  3. 百度云BCC配置Apache VirtualHost 实现相同域名不同端口访问不同应用

    问题描述:前戏:本人在百度云上购买了BCC虚拟服务,并购买域名,部署应用,可以正常访问(这里一切都很正常^_^). 事情正在起变化:随着开发的不断推进,工程在本地测试成功后,部署到服务器,会发现有些页 ...

  4. ArcGIS API for JavaScript 4.2学习笔记[13] Layer的弹窗(PopupTemplate)

    上一篇文章中讲到Popup是一个弹窗,是View对象的默认内置弹窗,并且在View对象构造时就顺便构造了. 那么这个PopupTemplate是什么呢? 后半截单词Template是"模板& ...

  5. ArcGIS API for JavaScript 4.3 与ArcGIS Server联动使用【地图服务】

    [前言] 有好些网友问我怎么使用Server发布的地图服务了,其实非常的简单. 我在这里先声明:不提供Server软件,需要的请自行使用互联网搜索资源: 不阐述Server如何发布各各种服务,但是我会 ...

  6. DEDECMS最新5.7版在Windows下的Memcache安装

    一,织梦后台后台设置进入系统后台,在[系统基本参数]下面的"性能选项"卡当中,关于memcache进行如下配置: cfg_memcache_enable : 是否启用memcach ...

  7. 发布 Google Chrome插件教程

    换个视角,世界不一样.嘘~~~ 如果你会使用js的话,那么你就可以自己动手写一个chrome插件,而且非常容易.google是一个全球化的平台,想想自己的程序被世界人民所使用,是不是很激动? 注册开发 ...

  8. badboy 录制脚本并并发脚本

    很久没有研究过接口相关的工具了,一个偶然的机会听说了 badboy,可以录制jemter脚本, 查了资料 还可以并发,于是乎,实践才知道. http://www.badboy.com.au/ 官网,我 ...

  9. Tomcat 组件介绍

    用了好长时间tomcat,但是其实自己只是反复听了这个名字,对Tomcat并不了解 1.Tomcat组件 Catalina Coyote Jasper Cluster 2.组件介绍 Tomcat Co ...

  10. (转载)Android出现“Read-only file system”解决办法

    下面介绍一篇Android出现“Read-only file system”解决办法 有碰到这类问题的朋友可参考参考.   Android-出现Read-only file system的解决方法 输 ...