JMeter-通过JDBC Request向数据库批量插入、删除数据

10 篇文章 0 订阅

工作场景

做性能测试之前,一般要准备一些铺底数据,比如插入五万条数据;还有就是做接口测试,先进行数据初始化,先插入部分数据。
批量插入数据,要注意的点:

  1. 主键ID不能重复,可以利用随机函数解决
  2. 涉及到同时执行多条sql语句的,要在Database URL后加入:allowMultiQueries=true,表示允许批量操作数据;
  3. 在Query Type中选择Callable statement


     

遇到的问题:

  1. Can not issue data manipulation statements with executeQuery()
     

原因:这个报错是Query Type选择错导致的

2.You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'INSERT INTO
提示语法错误,但是在Navicat中执行过该语句,确认没问题。

原因:Database URL中还要设置允许数据批量操作


 

3.插入的数据中文乱码

针对以上场景以及出现的问题,现在就拿一个实际例子来说明,具体的操作。


 

一、配置好JDBC Connection Configuration

按照前面的文档,配置好数据库连接配置,然后需要在Database URL后加入以下内容

?allowMultiQueries=true&characterEncoding=UTF-8

一个是用来大量数据操作,一个是设置字符集格式为:UTF-8

二、JDBC Request选择Callable statement

Query Type(SQL语句类型)包含了很多数据类型,下面讲解几个常用的数据类型
 

1、Select statement
这是一个查询语句类型;如果JDBC Request中的Query内容为一条查询语句,则选择这种类型。
 

2、Update statement
这是一个更新语句类型(包含insert和update),如果JDBC Request中的Query内容为一条更新语句,则选择这种类型。如果是每条sql语句之间用逗号隔开。
 

3、Callable statement
这是一个可调用语句类型,只要语法正确,任何语句,再多的条数都能支持,所以查询或者插入数据,进行多个sql语句操作,那么就要选择Callable statement。插入多条sql语句,则要现在Callable statement。

通过sql语句插入一个学校:

 

INSERT INTO `t_login_account` VALUES ('10208', '208', '10208', '8A0576BE2EF5CE5FF8C380CD910944B8', '2020-05-21 18:04:20', '20', null, '1', null);

 

INSERT INTO `t_school_info` VALUES ('208', 'test深圳208', null, '1', null, null, null, '1', '3', '1', '2020-05-26 08:00:00', '2020-08-31 08:00:00', null, null, null, null, '1', '', '10000', '2020-05-18 10:49:51', '10178', '2020-05-18 15:05:20', '1', '2020-05-26 08:00:00', '2020-08-31 08:00:00');

INSERT INTO `t_school_schooltype` VALUES ('208', '208', '1');

选择运行,看是否新建

上面是插入单条数据,使用不方便,下面就行参数化

1.加一个随机变量

当然也可以使用jmeter的随机变量

设置一下随机变量,记好变量名

2.JDBC Request中引用变量

变量的引用要根据实际情况,自己先要搞清楚数据表之间的联系,以及每个字段的意思,一般主键id进行随机。一下sql语句就是进行插入数据的参数化。

 

 

INSERT INTO `t_login_account` VALUES ('10${id}', '${id}', '10${id}', '8A0576BE2EF5CE5FF8C380CD910944B8', '2020-05-21 18:04:20', '20', null, '1', null);

 

INSERT INTO `t_school_info` VALUES ('${id}', 'test深圳${id}', null, '1', null, null, null, '1', '3', '1', '2020-05-26 08:00:00', '2020-08-31 08:00:00', null, null, null, null, '1', '', '10000', '2020-05-18 10:49:51', '10178', '2020-05-18 15:05:20', '1', '2016-05-26 08:00:00', '2016-08-31 08:00:00');

INSERT INTO `t_school_schooltype` VALUES ('${id}', '${id}', '1');

3.线程组中设置循环次数

当然也可以连接csv进行读取数据,在引到执行sql语句这里。

三、删除数据

原理差不多都一样,要删除刚才新建的数据

DELETE FROM t_login_account WHERE f_id='10${id}';
DELETE FROM t_school_info WHERE f_id='${id}';
DELETE FROM t_school_schooltype WHERE f_school_id='${id}';

运行下 在浏览器看结果。

 

 

 

  • 1
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值