
DELIMITER // CREATE PROCEDURE batch_insert_traffic() BEGIN DECLARE v_start_id INT DEFAULT 1; DECLARE v_end_id INT; DECLARE v_max_id INT DEFAULT 1555705; -- 改成你表里的最大 ID DECLARE v_batch_size INT DEFAULT 10000; -- 如果新表里已经有数据可以先清空 -- TRUNCATE TABLE ebay_traffic_report_new; WHILE v_start_id v_max_id DO SET v_end_id v_start_id v_batch_size - 1; INSERT INTO ebay_traffic_report SELECT * FROM ebay_traffic_report1 WHERE id BETWEEN v_start_id AND v_end_id; -- 每批提交一次存储过程中 COMMIT 需要谨慎但 InnoDB 默认自动提交手动提交也安全 COMMIT; SET v_start_id v_end_id 1; END WHILE; END // DELIMITER ; -- 执行存储过程 CALL batch_insert_traffic();