1.首先复制一条sql
在复制前,需要确定该记录是否有主键
若无,则代码非常简单,
insert into gl_energy_meter_data SELECT * from gl_energy_meter_data where dosage="12432";
复制的表名↑ 粘贴的表名↑ ↑ 某个字段的值最好唯一
若有主键,一般是ID,则需要随机生成新的ID
INSERT INTO tb_swing_card (
swing_card_number,
swing_card_device_id,
swing_card_serial,
swing_card_address,
swing_card_type,
swing_card_time,
swing_card_emp_id, 这一块为复制的表的所有字段
swing_card_emp_name,
swing_card_organ_name,
swing_card_id,
swing_card_device_name,
swing_card_device_type,
swing_card_device_direction,
swing_card_organ_id,
swing_card_organ_parent_ids,
tower_id,
tower_name,
floor_id,
floor_name,
region_id,
region_name
)
SELECT
swing_card_number,
swing_card_device_id,
swing_card_serial,
swing_card_address,
swing_card_type,
swing_card_time,
swing_card_emp_id,
swing_card_emp_name,
swing_card_organ_name,
REPLACE (uuid( ), '-', '' ), 这一块为粘贴地点的所有字段,将该id改为自动生成
swing_card_device_name,
swing_card_device_type,
swing_card_device_direction,
swing_card_organ_id,
swing_card_organ_parent_ids,
tower_id,
tower_name,
floor_id,
floor_name,
region_id,
region_name
FROM
tb_swing_card
WHERE
swing_card_id = "5d9fe31f7359a9141d7ebb5"; 所复制数据的某个字段的值(id)
此时成功生成一条数据,接来下的思路就是循环复制
2.循环一百万次执行
drop procedure if exists test_loop;
delimiter //
create procedure test_loop() # 创建存储过程
begin
declare i int default 1;
while i<1000000 循环次数
do
# 此处复制1中代码
set i=i+1;
end while;
commit;
end //
delimiter ; SELECT * from gl_energy_meter_data; # 复制的表名
CALL test_loop();
3.时间:10万条数据耗时3分钟左右。100万条半小时左右(不知道有没有什么更好的办法)