网站建设知识
MySQL批量插入测试数据
2025-07-22 11:14  点击:0

MySQL批量插入测试数据。在开发过程,经常需要在数据库中生成大量的测试数据,这个时候,我们可以使用存储过程帮我们完成这项工作。

首先,我们建立一张测试表,例如t_user

CREATE TABLE `t_user` (  `id` bigint(20) NOT NULL AUTO_INCREMENT,  `name` varchar(255) DEFAULT NULL,  `age` tinyint(4) DEFAULT NULL,  `create_time` datetime DEFAULT NULL,  `update_time` datetime DEFAULT NULL,  PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8;

下面,我么通过下面的存储过程来插入1000万条数据。

delimiter $$DROP PROCEDURE IF EXISTS proc_batch_insert;CREATE PROCEDURE proc_batch_insert()BEGINDECLARE pre_name BIGINT;DECLARE ageval INT;DECLARE i INT;SET pre_name=187635267;SET ageval=100;SET i=1;WHILE i < 1000000 DOINSERT INTO t_user(`name`,age,phone,create_time,update_time) VALUES(ConCAT(pre_name,'@qq'),(ageval+1)%30,NOW(),NOW());SET pre_name=pre_name+100;SET i=i+1;END WHILE;END $$delimiter ;call proc_batch_insert();

经过测试,插入1百万条数据,大约需要10分钟,如果表的字段更多,可能花费的时间更长。
网上有人说预先在程序里面生成数据,然后再通过客户端导入会更快。我尚未亲自实验,但是个人觉得不会有存储过程快,因为不管怎么样,最终执行的还是插入语句。

插入后的数据预览: