zoukankan      html  css  js  c++  java
  • 二十一、JMeter实战-通过JDBC Request向数据库批量插入、删除数据

    工作场景

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

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



    遇到的问题:

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

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





    1. 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中还要设置允许数据批量操作



    1. 插入的数据中文乱码

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



    一、配置好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语句这里。



    三、删除数据

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


    使用场景:插入一个学校,然后对该学生进行一系列操作,最后清理数据
  • 相关阅读:
    重温servlet③
    重温servlet②
    修改servlet的模板代码
    Oracle网络服务管理与配置
    Oracle数据库的启动与关闭
    java多线程
    SQL 查询
    Oracle索引表
    Oracle索引(2)索引的修改与维护
    Oracle索引(1)概述与创建索引
  • 原文地址:https://www.cnblogs.com/wwho/p/14299770.html
Copyright © 2011-2022 走看看