找回密码
 立即注册
首页 业界区 业界 MeterSphere V2.x 添加数据库驱动

MeterSphere V2.x 添加数据库驱动

懵诬哇 2025-6-27 19:08:40
MeterSphere V2.x 添加数据库驱动

背景

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

对象版本MeterSpherev2.10.24-ltsclickhouse驱动clickhouse-jdbc-0.4.6.jar操作流程


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

  • 将 clickhouse 驱动包分别复制到 api-test project-management ms-node-controller 容器中
  1. sudo docker cp clickhouse-jdbc-0.4.6.jar api-test:/app/lib
  2. sudo docker cp clickhouse-jdbc-0.4.6.jar project-management:/app/lib
  3. sudo docker cp clickhouse-jdbc-0.4.6.jar ms-node-controller:/app/lib
复制代码

  • 重启容器 api-test project-management ms-node-controller
  1. docker restart api-test project-management ms-node-controller
复制代码

  • 使用自定义脚本,编写代码,这里使用的是 groovy
  1. import groovy.sql.Sql
  2. import java.sql.DriverManager
  3. def connectToClickHouse() {
  4.     // ClickHouse 连接参数
  5.     def url = "jdbc:clickhouse://localhost:8123/default"
  6.     def user = "root"
  7.     def password = "clickhouse"
  8.     try {
  9.         // 注册 JDBC 驱动(通常在现代 JDBC 驱动中不需要显式注册)
  10.         Class.forName("com.clickhouse.jdbc.ClickHouseDriver")
  11.         // 创建数据库连接
  12.         def connection = DriverManager.getConnection(url, user, password)
  13.         log.info("成功连接到ClickHouse数据库")
  14.         // 使用 Groovy 的 Sql 类进行数据库操作
  15.         def sql = new Sql(connection)
  16.         // 执行查询
  17.         sql.eachRow("SELECT * FROM system.tables LIMIT 5") { row ->
  18.             log.info(row.toRowResult().collect { it }.join("\t"))
  19.         }
  20.         // 执行插入操作
  21.         sql.execute("CREATE TABLE IF NOT EXISTS test_table (id Int32, name String) ENGINE = Memory")
  22.         def rowsInserted = sql.executeInsert("""
  23.             INSERT INTO test_table VALUES
  24.             (1, 'Alice'),
  25.             (2, 'Bob'),
  26.             (3, 'Charlie')
  27.         """)
  28.         log.info("插入了 ${rowsInserted.size()} 行数据")
  29.         // 查询插入的数据
  30.         sql.eachRow("SELECT * FROM test_table") { row ->
  31.             log.info("ID: ${row.id}, Name: ${row.name}")
  32.         }
  33.         // 关闭连接
  34.         sql.close()
  35.     } catch (Exception e) {
  36.         log.info("操作出错: ${e.message}")
  37.         e.printStackTrace()
  38.     }
  39. }
  40. connectToClickHouse()
复制代码
2.jpeg


  • 执行脚本,结果如下
    3.jpeg


来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
您需要登录后才可以回帖 登录 | 立即注册