• MySQL如何插入测试数据


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

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

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

     具体代码如下:

     创建表:

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

     创建存储过程:

     1 mysql> delimiter $
     2 mysql> create procedure testdata()
     3     -> begin
     4     -> declare i int default 1;
     5     -> while(i<=1000) do
     6     -> insert into TB1(name) values(concat("test",i));
     7     -> set i=i+1;
     8     -> end while;
     9     -> end;
    10     -> $
    11 Query OK, 0 rows affected (0.02 sec)
    12 
    13 mysql> delimiter ;

     调用存储过程

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

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

    • 结合PHP生成测试数据

     testdata.php内容:

     1 <?php
     2 //  使用方法:php testdata.php root 123456
     3 //  第一个参数为数据库用户名,第二个参数为数据库密码
     4 
     5 //  一些设置项
     6 set_time_limit(0);
     7 $_ROWS     = 100000;     # 要插入的行数
     8 $_DATABASE = "DB1";      # 库名
     9 $_TABLE    = "TB1";      # 表名
    10 $_KV       = array(
    11     "name" => "test",    # 字段名 => 字段前缀
    12 );
    13 
    14 $t1 = microtime(true);
    15 //  生成SQL语句
    16 $sqlString = "INSERT INTO {$_TABLE} (". implode(",", array_keys($_KV))  .") VALUES ";
    17 $arr = $valArr = array();
    18 while ($_ROWS > 0) {
    19     foreach($_KV as $k => $v) {
    20         $arr[] = $v.$_ROWS;
    21     }
    22     $valArr[] = "('". implode("','", $arr) . "')";
    23     $_ROWS--;
    24     $arr = array();
    25 }
    26 $sqlString .= implode(',', array_values($valArr)) . ";";
    27 
    28 //  导入数据库
    29 list($scriptname, $dbuser, $dbpassword) = $argv;
    30 $con = mysqli_connect("127.0.0.1", $dbuser, $dbpassword, $_DATABASE) or die("error connecting") ;;
    31 mysqli_query($con, $sqlString);
    32 mysqli_close($con);
    33 $t2 = microtime(true);
    34 echo round($t2-$t1, 3) . " sec
    ";

      

     执行脚本

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

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

  • 相关阅读:
    第四篇博客
    第三篇博客
    第二篇博客
    DS博客作业04--图
    DS博客作业03--树
    DS博客作业02--栈和队列
    C博客作业05--指针
    C博客作业04-数组
    C语言博客作业03--函数
    C语言博客作业02--循环结构
  • 原文地址:https://www.cnblogs.com/benny-peng/p/8280355.html
Copyright © 2020-2023  润新知