• jmeter循环导出csv文件


    需求:取所有台账表的最大最小值

    1、设备分类表中tzbm字段中按设备类型存放了所有表

     

    分析思路:

    1、  循环获取台账表名

    2、  获取到的台账表取最大最小值

    3、  导出台账表名、最大值、最小值

     

    方法1

    Jdbc请求-获取服务名

    select t.table_schema,t.table_name from information_schema.tables t where t.table_name in (SELECT tzbm FROM us_sys.t_dw_bzzx_sbfl where tzbm is not null)

     

    这个请求声明出两个变量:table_schemas和table_names

    For控制器:

     

    由于table_names是一个list所以for循坏这个列表;

    输入:table_names

    输出:table_name

    如图所示,for控制器节点下有一个查询设备编码最大最小值的一个sampler,也就是这个请求执行的次数跟table_names  List里的元素的个数是相等的;

    Jdbc请求-查询设备编码最大最小值请求:

    select CONCAT(CONCAT('${table_schema}','.'),'${table_name}'),MAX(sbmc),MIN(sbmc) from ${table_schemas_1}.${table_name}

     

    现在做几个测试:

    第一种:我们直接用jdbc声明出的变量执行请求:

     

    结果失败;

    第二种:我们使用for控制器产出的变量执行请求:

     

    table_schemas还是结果失败,table_names可以了(因为for控制器将table_names输出成了table_name);由此可见jdbc的请求当一列存在多个数据时是不能直接用的;

    第三种情况:

    我们jdbc请求中:

    直接取table_schemas里面的一个值;

    结果成功:

     

    由此可见jdbc请求声明出来的变量必须要再key后加后缀进行使用,不能直接get其变量名;

     

    FileWriter fstream =new FileWriter("C:/Users/zr/Desktop/xiaorui.csv",true);

    BufferedWriter out =new BufferedWriter(fstream);

    out.write(("${BM_1}")+","+("${MAX_1}")+","+("${MIN_1}")+" ");  //获取变量的方式应当是 "${key}",而不是$"{key}",${key}的效果等效于vars.get(key);

    //out.write(","); //换列

    //out.write(System.getProperty("line.separator"));//换行

    out.close();

    fstream.close();

    第二种方法:循环控制器

    仅对和前面不同的地方做说明:这里取的是查询出来的总数量做为循环数量

     

    增加了计数器

     

     

    一个里面多个变量的情况,需要引用_V函数,如下图所示

     

  • 相关阅读:
    对C++虚函数、虚函数表的简单理解
    子数组最大累加和
    和为k的最长子数组及其延伸
    CentOS 安装codeblocks
    CentOS 6 安装chromium
    数组中累加和小于等于k的最长子数组
    数组最大矩形面积
    关于商品买卖最大收益的问题
    数组中只出现一次的数
    TinyHttpd代码解析
  • 原文地址:https://www.cnblogs.com/ruijie/p/14894063.html
Copyright © 2020-2023  润新知