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

文章目录

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

    虽然之前尝试过 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 聊聊,或者关注我的个人公众号“大象工具”, 查看更多联系方式