Clickhouse集群通过jdbc连接

jdbc url的定义

多个地址使用逗号隔开

String jdbcUrl = "jdbc:clickhouse://{ip1:port},{ip2:port},..."

其中url中可以带用户名密码,带上的使用方法

String jdbcUrl = "jdbc:clickhouse://{ip1:port},{ip2:port}/dbName?uese=zb&password=123456"

但需要注意的是,驱动包对于传入的jdbc url首先会进行一个模式匹配,判断出是否符合正则表达式,源码是

private static final Pattern URL_TEMPLATE = Pattern.compile(JDBC_CLICKHOUSE_PREFIX + "" +
            "//([a-zA-Z0-9_:,.-]+)" +
            "(/[a-zA-Z0-9_]+" +
            "([?][a-zA-Z0-9_]+[=][a-zA-Z0-9_]+([&][a-zA-Z0-9_]+[=][a-zA-Z0-9_]+)*)?" +
            ")?");
Matcher m = URL_TEMPLATE.matcher(url);
Validate.ensure(m.matches(), "Incorrect url: " + url);

对于url的每一部分都有相关的正则进行匹配,所以只到数据库后面不传入其它参数,带?号是不对的,以及密码中穿线一下%等字符也不在匹配范围内,如果密码出现了特殊字符怎么办,一是修改源码,二是在可以修改密码的条件下修改密码,三是使用Properties传入用户名和密码

jdbc url的解析获取到连接

不管是官方的驱动包

import ru.yandex.clickhouse.BalancedClickhouseDataSource;

还是官方支持的第三方包

import com.github.housepower.jdbc.BalancedClickhouseDataSource;

都可用下面的解析方式获取连接对象

Connection conn = new BalancedClickhouseDataSource(jdbcUrl).getConnection()

连接后执行操作

Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery("SELECT .....")
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值