zoukankan      html  css  js  c++  java
  • Mysql创建存储过程--批量插入数据

    需求:批量插入上万条数据,要求created_at(创建时间)为依次递增的数据,其他字段不做限制

    实现上述需求,可以通过文件的形式或者创建存储过程的方式实现,小编今天就以写一个简单的存储过程来实现该需求:


     步骤一:表结构,如下:



     步骤二:编写存储过程:


     1)检查库中函数下是否已存在同名的存储过程,如果存在,则需要执行删除存储过程的操作

    -- 如果需要存储过程已存在,则可以先执行删除存储过程操作
    DROP PROCEDURE
    IF
    EXISTS `proc_auto_insertdata2`;

    2)新建一个查询,运行创建存储过程的脚本:

    CREATE  PROCEDURE `proc_auto_insertdata2`(
    IN record INTEGER, -- record参数用来传需要插入数据的条数
    IN dt timestamp -- dt参数用来传入时间戳,开始插入的第一条数据的时间(格式为:'2020-10-24 14:31:44')
    )
    BEGIN
    DECLARE number INTEGER ; -- 声明一个number,用来控制循环的次数
    set number=1; -- 将number的值赋值为1,代表循环从1开始
    START TRANSACTION;
    WHILE number <=record DO -- 使用while进行循环,满足条件进入循环
    select date_add(dt, interval 1 second) into dt;-- 使用date_add()函数将时间进行转换为秒数,并赋值给dt参数
    -- 插入数据
    INSERT INTO
    school.auction_records -- 库名.表名
    -- 由于id是自动增长,不需要额外赋值,所以需要将剩余的其他字段全部列出进行一一对应赋值插入
    (pool_id,
    auctionable_id,
    auctionable_type,
    auction_prize_id,
    prize_id,
    coin,
    status,
    created_at,
    updated_at)
    VALUES(
    1,
    2,
    'participator',
    13,
    1,
    2,
    2,
    dt,
    dt);
    -- number参数进行自增
    set number =number+1;
    -- dt参数进行自增
    set dt = date_add(dt, interval 1 second);
    end WHILE;
    COMMIT;
    END

     创建成功之后,在库的函数下进行刷新,则可以看到新建的存储过程:


     步骤三:用存储过程进行批量插入数据:


     调用方法一:使用脚本

    call proc_auto_insertdata2(20,'2020-10-24 14:31:44')

    执行结果如下:

    执行成功之后,查看表中的数据:

     调用方法二:运行存储过程

  • 相关阅读:
    静态方法
    表单的验证
    jquery笔记
    jquery参考
    dom体系 和获取其他页面的Window对象
    jsRegExp对象
    jsDate对象
    js案例
    Sqli-Labs 闯关 less 42-53
    Sqli-Labs 闯关 less 32-41
  • 原文地址:https://www.cnblogs.com/smilecindy/p/14008692.html
Copyright © 2011-2022 走看看