轻松插入重复的MySQL测试数据?

时间:2011-09-13 07:36:14

标签: mysql sql insert

不是一次一行地创建一行测试数据,而是可以在MySQL中运行以执行以下操作的查询:

表名:my_table 行包括:ID(自动增量),fname,lname,电子邮件,电话

测试数据应复制到100行,其中数据为:

1   John   Doe   jdoe@jdoe.com   0000000  
2   John   Doe   jdoe@jdoe.com   0000000  
...  
100   John   Doe   jdoe@jdoe.com   0000000  

谢谢!

5 个答案:

答案 0 :(得分:5)

一种方法是使用现有的表,其中包含要插入新表的行数。假设现有表是old_table并且它有100(或更多)行的任何数据,这就是你要做的:

insert into my_table (fname,lname,email,phone)
    select 'John', 'Doe', 'jdoe@jdoe.com', '0000000' 
    from old_table
    limit 100

如果my_table中的主键是自动递增,那么这应该起作用

答案 1 :(得分:4)

您可以创建一个未命名的块并使用内部循环执行100次查询。

BEGIN
  DECLARE v1 INT DEFAULT 0;

  WHILE v1 < 100 DO
    INSERT INTO my_table (ID, fname, lname, email, phone) VALUES (DEFAULT, 'John', 'Doe', 'jdoe@jdoe.com', '000000');
    SET v1 = v1 + 1;
  END WHILE;
END

答案 2 :(得分:1)

这个SQL应该可以解决问题 - 只需修改INSERT

即可
DELIMITER //


CREATE PROCEDURE addItems(number INT)
BEGIN
  label1: LOOP
    SET number = number - 1;
    INSERT ....
    IF number <> 0 THEN ITERATE label1; END IF;
    LEAVE label1;
  END LOOP label1;
END;//

DELIMITER ;
CALL addItems(100);

答案 3 :(得分:0)

我认为您需要编写一段简单的代码来为您完成此操作。由于您的ID是自动增量,因此类似于:

<?php
 $sql = "INSERT INTO table1 (fname, lname, email, phone) VALUES ";

 for($i=0;$<=100;$i++)
    $sql .= "('John', 'Doe', 'jdoe@jdoe.com', '0000000'),";   

 mysql_query(substr($sql, 0, -1));
?>

答案 4 :(得分:0)

也许您可以尝试http://www.generatedata.com/#generator在选项下,您可以输入重复的值。