You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在JMeter中实现一对多关系的两张数据库表数据填充?

JMeter实现主从表一对多批量插入

核心配置思路

先插入主表记录,获取生成的主键(这里用Counter组件生成,直接存入变量),再循环指定次数插入从表,每次将主表主键作为外键传入。

具体步骤

1. 全局前置组件配置

  • 添加Test Plan,创建线程组(设置线程数1,循环次数5,对应外层循环逻辑)
  • 添加Counter组件:
    • 名称设为「主表主键生成器」
    • 起始值1,递增步长1,最大值5,引用名称设为Table1_id(对应主表的entity_id字段)
  • 添加CSV Data Set Config:
    • 配置主表其他字段的CSV数据源,定义引用变量(比如col1、col2、col3)

2. 主表插入请求

添加JDBC Request组件,配置数据库连接后,写入SQL语句:

INSERT INTO table_1 (entity_id, col1, col2, col3) VALUES (${Table1_id}, ${col1}, ${col2}, ${col3})

(替换为你的实际表字段名和CSV变量名)

3. 生成从表随机插入次数

添加JSR223 Sampler,用Groovy脚本生成0-4之间的随机数(对应原逻辑的rand.nextInt(5)):

def insertNum = new Random().nextInt(5)
vars.put("insert_count", insertNum.toString())

将生成的次数存入insert_count变量,供后续循环使用。

4. 从表循环插入

添加Loop Controller,设置循环次数为${insert_count}(引用上面生成的随机数变量)
在Loop Controller下添加JDBC Request组件,写入从表插入SQL:

INSERT INTO table_2 (id, parent_id, col_a, col_b) VALUES (UUID(), ${Table1_id}, 34, 5)
  • 从表的id字段如果是自增类型可直接省略,或用UUID()生成唯一值,根据你的数据库规则调整
  • ${Table1_id}即为主表生成的主键,作为外键parent_id传入

5. 验证与调试

  • 添加View Results Tree组件,查看每个请求的执行结果与SQL语句
  • 可在JSR223 Sampler中添加日志输出,方便调试:
log.info("当前主表主键:${Table1_id},从表需插入次数:${insertNum}")

注意事项

  • 单线程场景下Counter组件无需额外配置,多线程场景需勾选「Track counter independently for each user」保证主键唯一
  • 确保JDBC连接配置正确,数据库账号拥有两张表的插入权限
  • Loop Controller的循环次数必须引用变量,不要写死数值

内容的提问来源于stack exchange,提问作者Ajantha Hebbar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 09:30:57