本质上是对数据库数据进行压力测试,现在要做的就是用SQL语句写一个循环,往表格里不断插数。比如这个表,我想设置一个开始时间和一个结束时间,然后在这个时间循环内,每隔一分钟就在每一列不断加数,麻烦的话也可以先从一列开始。比如从2015-4-29 12:00:00到2017-3-15 12:00:00这个时间段。求教啊,我是否可以设置8根管线为一组数据呢?

解决方案 »

  1.   

    可以使用shell的crontab方式,调用mysql命令来实现。
      

  2.   

    这个定时任务应该怎么写呢,我之前在cmd命令下,在温度那循环插入,时间上直接写的now(),显示Duplicate entry '时间' for key 'PRIMARY'.求指教
      

  3.   


    mysql> use hr
    Reading table information for completion of table and column names
    You can turn off this feature to get a quicker startup with -ADatabase changed
    mysql> show create table testadddate;
    +-------------+------------------------------------------------------------------------------------------------------+
    | Table       | Create Table                                                                                         |
    +-------------+------------------------------------------------------------------------------------------------------+
    | testadddate | CREATE TABLE `testadddate` (
      `xdate` varchar(40) DEFAULT NULL
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
    +-------------+------------------------------------------------------------------------------------------------------+
    1 row in set (0.00 sec)mysql> SELECT DATEDIFF('2017-3-15 12:00:00','2015-4-29 12:00:00') * 24 * 60
        -> ;
    +---------------------------------------------------------------+
    | DATEDIFF('2017-3-15 12:00:00','2015-4-29 12:00:00') * 24 * 60 |
    +---------------------------------------------------------------+
    |                                                        987840 |  -------------总分钟数
    +---------------------------------------------------------------+
    1 row in set (0.00 sec)mysql> ------------------------------------- 返回Shell
    --- 在Shell里执行这个脚本
    for ((i=1;i<=987840;i++))
    do
    mysql -e "INSERT INTO hr.testadddate(xdate) SELECT DATE_ADD('2015-4-29 12:00:00',INTERVAL $i MINUTE);"
    done
      

  4.   


    您好,有些地方不太了解,您的数据库名为hr,mysql> show create table testadddate;这句意思是不是表名为create table testadddate 呢?
    表下有两列,为table和create table,CREATE TABLE `testadddate` ( `xdate` varchar(40) DEFAULT NULL)ENGINE=InnoDB DEFAULT CHARSET=utf8 这个是什么意思啊,是操作吗,show下不是展现的是表的内容吗?
    mysql -e "INSERT INTO hr.testadddate(xdate) SELECT DATE_ADD('2015-4-29 12:00:00',INTERVAL $i MINUTE);"这句话是什么意思呢,得到总时间后,插入的是什么数据呢?不是秒吗,最后为什么是munute呢?
    本人非常小白,非常感谢您的回复,希望您帮我答疑,谢谢啦!
      

  5.   

    你好,show create table ..是想让你看看我这个表结构, mysql -e "" 是在Linux Shell里直接执行SQL命令。 
    INSERT INTO hr.testadddate(xdate) SELECT DATE_ADD('2015-4-29 12:00:00',INTERVAL $i MINUTE);"  这个SQL是生成如你所说的2015-04-29 12:00:00  到'2017-3-15 12:00:00'  的数据填充字段
      

  6.   

    非常感谢您的回复,还有两个问题,一是为什么我不能设置xdate DEFAULT NULL,只能显示不能为空?这个有关系吗?二是,从for开始执行插入会出错呢,for那为什么是两个括号呢,从for到done是一直写下来不按回车吗,我这一直提示出错。。还有$i MINUTE这是不是秒second啊?谢谢啊!
      

  7.   

    您好,mysql> 
     
    ------------------------------------- 返回Shell
    --- 在Shell里执行这个脚本
    for ((i=1;i<=987840;i++))
    do
    mysql -e "INSERT INTO hr.testadddate(xdate) SELECT DATE_ADD('2015-4-29 12:00:00',INTERVAL $i MINUTE);"
    done这几步还是在cmd命令行下继续执行的吗,还是要切换到Linux系统下呢,我接着执行就出错了?