業務需要,往某個表中批量插入資料,使用儲存過程插入

首先,要建立一張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 '' 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);

執行結果