我有一张约50K行的表。我需要将这个数据乘以10倍以至少有5M行来测试性能。现在,我花了几分钟从CSV文件导入50K,所以我不想创建一个5M记录文件,然后将其导入SQL。
有没有办法一遍又一遍地复制现有的行来创建5M记录?我不介意如果行相同,它们应该只有一个不同的id
,这是主要(自动增量)列。
我目前正在使用phpMyAdmin在XAMPP上执行此操作。
答案 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();