我需要将一个表中的1百万条记录分2批插入到另一张表中,在MYSQL中每批500k记录

问题描述 投票:0回答:1

嗨,任何人都可以帮助我在MYSQL中循环插入7年7百万条记录(每年百万条记录)的过程,

我需要每批插入500,000。

表“ Archive_data”中有数据,需要在“ Stg_table”中插入

存档数据具有年度销售额,我想在Year的MYSQL循环中编写一个循环,并分别插入一批500K

我尝试过

insert into SDL_Stg_Bill_Details
select SDL_Id, Rec_Is_Processed, concat(Bill_Header_Key,'_',Row_Num), Bill_Header_Key,Row_Num from (
SELECT SDL_Id, Rec_Is_Processed, Bill_Details_Key, Bill_Header_Key,
 ROW_NUMBER() OVER(partition by Bill_Header_Key order by SDL_Id ) Row_Num
FROM PANTALOONS_SOLUS_PROD.SDL_Stg_Bill_Details_Archive 
where EXTRACT(YEAR_MONTH FROM Bill_Date) in ('201406',
'201407',
'201408',
'201409',
'201410') ff

如果我正在尝试7 M条记录,我将获得锁定等待超时超出错误立刻

提前感谢

mysql bulkinsert
1个回答
0
投票

不确定这是否是您想要的,但是我希望通过一些调整可以对您有所帮助:

DELIMITER $
CREATE PROCEDURE CopyDataInBatch()
BEGIN
    DECLARE x  INT;
    DECLARE y  INT;
    SET x = 1;
    SET y = x + 6;
    the_loop :  LOOP
        IF  x > 1000000 THEN  /* Use the number of rows you wanted to copy*/
            LEAVE  the_loop;
        END  IF;
        INSERT INTO table_in_which_copying (col_name_1, col_name_2)
        SELECT (col_name_1, col_name_2) FROM table_from_which_copying
        ORDER BY (col_name_1)
        LIMIT x, y;
        SET  x = x + 10000;
        SET  y = y + 10000;
        SELECT "Copied 10000 rows"; /* Only for testing... better remove it(?)*/
    END LOOP;
END $ 
DELIMITER ;
© www.soinside.com 2019 - 2024. All rights reserved.