使用mysql在一个查询中插入1000000行

mzsu5hc0  于 2021-06-15  发布在  Mysql
关注(0)|答案(2)|浏览(551)

为了测试,我必须插入1000000行相同的值。
这是insert one row的查询。

insert into CRM_test.CRM_Pipeline(Name,BranchId,CreatedOn,CreatedFrom ) values("Pipeline1",1, now(),95);

有没有什么方法可以使用mysql在一个查询中插入1000000行?
提前谢谢

pobjuy32

pobjuy321#

我不知道这是否适用于1000000行,
如果没有,您可以将该数字减少为较小的值,并多次运行查询。
创建并执行此存储过程。

CREATE PROCEDURE addRows()
BEGIN
    DECLARE i int DEFAULT 1;
    WHILE i <= 1000000 DO
         insert into CRM_test.CRM_Pipeline(Name,BranchId,CreatedOn,CreatedFrom ) values("Pipeline1",1, now(),95);
        SET i = i + 1;
    END WHILE;
END
jv2fixgn

jv2fixgn2#

从理论上讲,通过 INSERT 声明。但实际上,你可能会受到 max_allowed_packet ,默认为1mb。一种选择是暂时增加 max_allowed_packet 一个可以支持插入一百万条记录的值。另一种方法是 LOAD DATA 包含您的数据的csv文件。
不进行单个插入的一个动机是,考虑到插入的大小,如果插入在中间某个位置失败,例如由于网络问题,您可能会丢失整个事务,或者最终导致部分插入。因此,您可能希望将insert分解成更小的批,如果没有其他原因的话,只会使其更安全。

相关问题