Легко ли вставить дублированные тестовые данные MySQL? - PullRequest
2 голосов
/ 13 сентября 2011

Вместо создания строки за строкой тестовых данных по одному, есть ли запрос, который я мог бы выполнить в MySQL для выполнения следующих действий:

Имя таблицы: my_table Строки состоят из: ID (автоинкрементный), fname, lname, email, телефон

Тестовые данные должны быть продублированы в 100 строк, где данные будут:

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

Спасибо!

Ответы [ 5 ]

5 голосов
/ 13 сентября 2011

Один из способов сделать это - использовать существующую таблицу, содержащую столько строк, сколько вы хотите вставить в новую таблицу. предположим, что существующая таблица 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 является автоинкремент, тогда это должно работать

4 голосов
/ 13 сентября 2011

Вы можете создать безымянный блок и использовать цикл внутри, чтобы выполнить запрос 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
1 голос
/ 13 сентября 2011

Этот 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);
0 голосов
/ 13 сентября 2011

Может быть, вы можете попробовать http://www.generatedata.com/#generator В разделе Параметры вы можете ввести повторяющиеся значения.

0 голосов
/ 13 сентября 2011

Я думаю, вам нужно написать простой кусок кода, который сделает это за вас.Поскольку ваш идентификатор автоматически увеличивается, он будет выглядеть примерно так:

<?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));
?>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...