MeterSphere V2.x 添加数据库驱动

MeterSphere V2.x 添加数据库驱动

背景

在使用 MeterSphere 进行接口测试时,会遇到一些接口场景,需要先查询数据库获取特定数据,再将查询结果作为请求参数传递给后续接口。然而,MeterSphere 默认仅支持 MySQL、Oracle、SQL Server 和 PostgreSQL 等常见数据库的查询操作。如果需要查询其他类型的数据库(例如 ClickHouse),则需通过编写脚本代码的方式来实现数据库连接与数据查询。以下将以 ClickHouse 数据库为例,详细介绍如何通过代码实现与其他类型数据库的连接与交互。

演示环境

对象版本
MeterSpherev2.10.24-lts
clickhouse驱动clickhouse-jdbc-0.4.6.jar

操作流程

  1. 下载驱动包我就不赘述了,直接将 clickhouse 驱动包上传到 metersphere的服务器中(建议上传至 ./metersphere/data
    image

  2. 将 clickhouse 驱动包分别复制到 api-test project-management ms-node-controller 容器中

sudo docker cp clickhouse-jdbc-0.4.6.jar api-test:/app/lib
sudo docker cp clickhouse-jdbc-0.4.6.jar project-management:/app/lib
sudo docker cp clickhouse-jdbc-0.4.6.jar ms-node-controller:/app/lib
  1. 重启容器 api-test project-management ms-node-controller
docker restart api-test project-management ms-node-controller
  1. 使用自定义脚本,编写代码,这里使用的是 groovy
import groovy.sql.Sql
import java.sql.DriverManager

def connectToClickHouse() {
    // ClickHouse 连接参数
    def url = "jdbc:clickhouse://localhost:8123/default"
    def user = "root"
    def password = "clickhouse"

    try {
        // 注册 JDBC 驱动(通常在现代 JDBC 驱动中不需要显式注册)
        Class.forName("com.clickhouse.jdbc.ClickHouseDriver")

        // 创建数据库连接
        def connection = DriverManager.getConnection(url, user, password)
        log.info("成功连接到ClickHouse数据库")

        // 使用 Groovy 的 Sql 类进行数据库操作
        def sql = new Sql(connection)

        // 执行查询
        sql.eachRow("SELECT * FROM system.tables LIMIT 5") { row ->
            log.info(row.toRowResult().collect { it }.join("\t"))
        }

        // 执行插入操作
        sql.execute("CREATE TABLE IF NOT EXISTS test_table (id Int32, name String) ENGINE = Memory")
        def rowsInserted = sql.executeInsert("""
            INSERT INTO test_table VALUES 
            (1, 'Alice'), 
            (2, 'Bob'), 
            (3, 'Charlie')
        """)
        log.info("插入了 ${rowsInserted.size()} 行数据")

        // 查询插入的数据
        sql.eachRow("SELECT * FROM test_table") { row ->
            log.info("ID: ${row.id}, Name: ${row.name}")
        }

        // 关闭连接
        sql.close()
    } catch (Exception e) {
        log.info("操作出错: ${e.message}")
        e.printStackTrace()
    }
}

connectToClickHouse()

image

  1. 执行脚本,结果如下
    image

__EOF__

原创作者: test-gang 转载于: https://www.cnblogs.com/test-gang/p/18952753
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值