MySQL 存储过程批量插入测试数据

造测试数据时,可以用存储过程循环插入,比手动执行多条 insert 或程序里循环拼 SQL 都方便。下面的例子向 t_user 表插入 30 万条记录:

 1DROP PROCEDURE IF EXISTS proc_initData;
 2DELIMITER $
 3CREATE PROCEDURE proc_initData()
 4BEGIN
 5    DECLARE i INT DEFAULT 1;
 6    WHILE i <= 300000
 7        DO
 8
 9            insert into t_user (account,
10                                password,
11                                area_code)
12            values (i, i, '123456');
13            SET i = i + 1;
14        END WHILE;
15END $
16
17CALL proc_initData();

说明:

  • DELIMITER $ 把语句结束符临时改为 $,避免存储过程体内的分号提前截断定义,END $ 之后恢复;该写法在 MySQL 命令行、Navicat 等客户端中可用。
  • 想插入更多数据,调整 WHILE i <= 300000 的上限即可;数据量大时建议分批提交,避免 undo log 膨胀。