快速插入大量数据有两种思路:一是利用 java 代码实现;一是利用数据库的存储过程。
今天说一说如何利用存储过程快速插入数据。
SQL 语句需要先编译然后执行,而存储过程是一组为了完成特定功能的 SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字来调用执行它。
存储过程可以用控制语句编写,有很强的灵活性,可以完成复杂的判断和较复杂的运算。存储过程被创建后,可以在程序中被多次调用,而不必重新编写该存储过程的SQL语句。
使用存储过程可以很方便快捷的插入大量的测试数据,实测使用存储过程存放 100 万条数据,耗时 31 秒。下面就来看一下具体的操作过程:
首先,当然是建一个数据表,注意数据表的引擎使用的是 MyISAM:
CREATE TABLE `tb_user` (
`id` BIGINT (20),
`user_name` VARCHAR (200),
`user_password` VARCHAR (200),
`birth` DATETIME ,
`sex` CHAR (4),
`email` VARCHAR (200),
`mobile` VARCHAR (200),
`create_date` DATETIME ,
`update_date` DATETIME ,
`description` VARCHAR (800)
) ENGINE=MyISAM;
创建存储过程:
DELIMITER $$
CREATE
PROCEDURE `testdb`.`pro_tb_user`()
BEGIN
DECLARE i INT;
SET i=0;
WHILE i>=0 && i<= 1000000 DO
INSERT INTO testdb.`tb_user`
(`id`, `user_name`, `user_password`, `birth`, `sex`, `email`, `mobile`, `create_date`, `update_date`, `description`) VALUES
(i,'admin','123456',NOW(),'M','admin@qq.com','13812345678',NOW(),NOW(),'超级管理员');
SET i=i + 1;
END WHILE;
END$$
DELIMITER ;
调用存储过程:
call pro_tb_user();
网友评论