Mysql - 从现有行创建样本数据

时间:2017-05-25 04:52:49

标签: mysql testing sample-data

我有一张约50K行的表。我需要将这个数据乘以10倍以至少有5M行来测试性能。现在,我花了几分钟从CSV文件导入50K,所以我不想创建一个5M记录文件,然后将其导入SQL。

有没有办法一遍又一遍地复制现有的行来创建5M记录?我不介意如果行相同,它们应该只有一个不同的id,这是主要(自动增量)列。

我目前正在使用phpMyAdmin在XAMPP上执行此操作。

3 个答案:

答案 0 :(得分:1)

Insert into my_table (y,z) select y, z from my_table;  

其中x是您的自动增量ID。

重复一次(非常小)次数

答案 1 :(得分:0)

选项1:使用联合

 insert into your_table (col1,col2)
    select col1,col2  from your_table
    union all 
    select col1,col2 from your_table
    union all 
    select col1,col2 from your_table
    union all 
    select col1,col2 from your_table
    continued...

选项2:使用包含10条记录的虚拟表并进行交叉连接

创建一个包含10行的虚拟表

insert into your_table (col1,col2)
select col1,col2 from your_table, dummy_table

答案 2 :(得分:0)

如果您有~50K行,那么将它们复制99次将为您提供~5M行。 为此,您可以创建一个过程并使用循环将它们复制99次。

DELIMITER $$
CREATE PROCEDURE populate()
BEGIN
  DECLARE counter INT DEFAULT 1;

  WHILE counter < 100 DO
    insert into mytable(colA, colB) select colA, colB from mytable;
    SET counter = counter + 1;
  END WHILE;
END $$

DELIMITER ;

然后您可以使用

调用该过程
call populate();