批量生成测试数据:MySQL SQL for 循环脚本,批量执行一个 insert 语句

更新日期: 2026-01-04 阅读次数: 61 字数: 595 分类: MySQL

正在测试一个招聘功能,需要生成一堆测试数据,放到某个公司下。

虽然之前尝试过 golang 的 faker 库,参考:自动创建测试数据的库 go-faker。 但是,我感觉,还是不如直接写 SQL 语句来的自由方便。

这里记录一下如何批量生成 MySQL 数据库测试数据的步骤:

先录入一条测试数据

在 web 管理后台,或者 MySQL WorkBench 的 GUI 界面。手动录入一条测试数据记录。

用 Web 管理后台的好处是,可以顺便测试一下开发的管理页面功能是否有 bug。

生成单条的 insert SQL

在 MySQL WorkBench 里,查询显示当前数据表的所有记录。

可以复制某一行(copy row),然后 paste row 黏贴,点击 apply,就能看到对应的 insert SQL 语句。 这条语句记录下来,后面会用到。

SQL 的 for 循环插入

让 AI 写了个 SQL for 循环。这要是让我写,我是写不出来的。。。

use some_db;

-- 创建存储过程
DELIMITER $$
CREATE PROCEDURE batch_insert()
BEGIN
    DECLARE i INT DEFAULT 1;
    DECLARE max_count INT DEFAULT 10; -- 设置循环次数

    WHILE i <= max_count DO
        -- 执行插入语句,这里用变量控制
        INSERT INTO `job`
		(`title`, `company_id`, `location`)
		VALUES
		(CONCAT('后台开发', i), '1', '烟台');

        SET i = i + 1;
    END WHILE;
END$$
DELIMITER ;

-- 调用存储过程
CALL batch_insert();

-- 删除存储过程
DROP PROCEDURE IF EXISTS batch_insert;

把里面的 insert 语句替换成自己的即可。

然后后面就可以调用存储过程来批量插入测试数据了。

这个比正常的 faker 库方便的地方是,可以自由指定某个字段的值,例如给某个公司插入 100 条招聘信息。 要灵感得多。

关于作者 🌱

我是来自山东烟台的一名开发者,有感兴趣的话题,或者软件开发需求,欢迎加微信 zhongwei 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式