关于插入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. RESTful 的通俗解释

    转载自知乎,通俗易懂的讲解了RESTful链接:https://www.zhihu.com/question/28557115/answer/48094438 REST -- REpresentati ...

  2. 把项目放到码云上,通过git 进行项目管理

    1.在码云上新建一个项目 把使用 Readme文件初始化这个项目这个勾选去掉  项目生成后会看到 码云的git 简易的命令行入门教程: Git 全局设置: git config --global us ...

  3. 什么是JWT(JSON WEB TOKEN)

    转自于:http://www.jianshu.com/p/576dbf44b2ae 什么是JWT Json web token(JWT)是为了网络应用环境间传递声明而执行的一种基于JSON的开发标准( ...

  4. 小白的Python之路 day4 装饰器前奏

    装饰器前奏: 一.定义: 1.装饰器本质是函数,语法都是用def去定义的 (函数的目的:他需要完成特定的功能) 2.装饰器的功能:就是装饰其他函数(就是为其他函数添加附加功能) 二.原则: 1. 不能 ...

  5. php面向对象4

    成员属性 基本介绍 成员属性是类的一个组成部分,一般是基本数据类型,也可以是复合类型,资源类型.比如 public $age;就是成员属性 说明 ①成员属性可以是php的任何数据类型(int, flo ...

  6. 动态WebApi

    动态WebApi实现了直接对Service的调用,其实没有跨过ApiController,只是我们自己创建出ApiController 实现主要分以下几步 一 对默认WebApi服务的替换 ApiGl ...

  7. Wincc flexable的局势视图的组态

    1.趋势视图介绍 2.实时趋势视图的组态 1)创建连接和变量 2)开始组态局势视图 3)设置趋势视图的属性,添加一个趋势 3.模拟运行HMI,观察局势图

  8. 解题思路:house robber i && ii && iii

    这系列题的背景:有个小偷要偷钱,每个屋内都有一定数额的钱,小偷要发家致富在北京买房的话势必要把所有屋子的钱都偷了,但是屋子之内装了警报器,在一定条件下会触发朝阳群众的电话,所以小偷必须聪明一点,才能保 ...

  9. ArcGIS API for JavaScript 4.2学习笔记[23] 没有地图如何进行查询?【FindTask类的使用】

    从第一篇到现在都是基于地图的,不管怎么样,不管是2D还是3D,至少有个图. 这次来个没有图的例子,看看纯文字的空间查询是什么样的. 本例适用于后台查询或低性能电脑的查询. 预览图 由于4.3和4.2的 ...

  10. 房上的猫:经典排序算法 - 冒泡排序Bubble sort

    原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束,以此类推例子为从小到大排 ...