Mysql - 从现有行创建示例数据

Mysql - Create sample data from existing rows

我有一个 table 大约有 50K 行。我需要将此数据乘以 10 倍以获得至少 5M 行来测试性能。现在,我花了很长时间从 CSV 文件导入 50K,所以我不想创建一个 5M 的记录文件,然后将其导入 SQL.

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

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

选项 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 条记录使用虚拟 table 并进行交叉连接

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

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

如果您有约 50K 行,则将它们复制 99 次将为您提供约 500 万行。 为此,您可以创建一个过程并使用循环将它们复制 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();
Insert into my_table (y,z) select y, z from my_table;  

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

重复(非常少)次