zoukankan      html  css  js  c++  java
  • mysql存储过程批量向表插入数据

    业务需要,往某个表中批量插入数据,使用存储过程插入

    首先,要建立一张mysql表,表明为phone_number, 三个字段,id 自增,number 就是要插入的表格,is_used 表示十分已经使用,默认值为0,未使用

    CREATE TABLE `phone_number` (
      `id` int(8) NOT NULL AUTO_INCREMENT,
      `number` varchar(12) NOT NULL,
      `is_used` tinyint(1) DEFAULT '0' COMMENT '是否已经使用 1 已经使用,0 未使用',
      PRIMARY KEY (`id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=81 DEFAULT CHARSET=utf8;

    在新建存储过程,存储过程名称为batch_insert,传入2个参数,第一个表示开始的号码,把号码当成一个整数。第二个参数是循环插入多少条记录,每插入一次后把插入的号码增加1,再插入。

    DELIMITER $$
    USE `db_xxxx`$$
    DROP PROCEDURE IF EXISTS `batch_insert`$$
    CREATE DEFINER=`root`@`%` PROCEDURE `batch_insert`(IN `start_number` BIGINT,IN `counts` BIGINT)
    BEGIN 
        DECLARE p_number BIGINT DEFAULT start_number;
        DECLARE stop_number BIGINT DEFAULT start_number;
        SET stop_number=start_number + counts;
        WHILE p_number < stop_number DO
            INSERT INTO phone_number(number) VALUES(p_number); 
            SET p_number=p_number+1; 
        END WHILE ; 
        COMMIT; 
    END$$
    DELIMITER ;

    如下调用带2个参数,表示13535561906开始插入,插入40条记录后停止插入

    CALL batch_insert(13535561906,40);

    执行结果

  • 相关阅读:
    Linux之lsof命令
    lnmp一键安装的卸载
    MySQL密码忘了怎么办?MySQL重置root密码方法
    LNMP状态管理命令
    perl5 第一章 概述
    行政级别详解
    http://dl.fedoraproject.org/pub/epel/7/x86_64/,开源软件清单list
    Linux Centos 系统上安装BT客户端 Transmission
    在VPS上安裝BT軟體Transmission
    What is a good EPUB reader on Linux
  • 原文地址:https://www.cnblogs.com/testway/p/9293870.html
Copyright © 2011-2022 走看看