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 膨胀。
