ClickHouse使用JDBC

ClickHouse支持标准的JDBC协议,底层基于HTTP接口通信,使用下面的Maven依赖,即可为JAVA程序引入官方提供的数据库驱动包。

<dependency>

  <groupId>ru.yandex.clickhouse</groupId>

  <artifactId>clickhouse-jdbc</artifactId>

  <version>0.2.4</version>

</dependency>

该驱动有两种使用方式:

1.标准形式

标准形式是比较常用的方式,通过JDK原生接口获取连接,其关键参数如下:

①JDBC Driver Class为ru.yandex.clickhouse.ClickHouseDriver;

②JDBC URL为jdbc:clickhouse://<host>:<port>[/<database>];

伪代码:

//初始化驱动

Class.forName("ru.yandex.clickhouse.ClickHouseDriver");

//url

String url = "jdbc:clickhouse://ch5.nauu.com:8123/default";

//用户名密码

String user = "default";

String password = " ";

//登录

Connect con = DriverManager.getConnection(url,username,password);

Statement stmt = con.createStateement();

//查询

ResultSet rs = stmt.executeQuery(" SELECT 1");

rs.exec();

System.out.printf("res"+ re.getInt(1));

 

2.高可用模式

高可用模式允许设置多个Host地址,每次会从可用的地址中随机选择一个进行连接器URL声明 格式如下:

jdbc:clickhouse: //<first-host>:<port>,<second-host>:<port>[,...]/<database>

在高可用模式下,需要通过BalancedClickhouseDataSource对象来获取连接。

伪代码:

//多个地址使用逗号分隔

String url1 = "jdbc:clickhouse://ch8.nauu.com:8123,ch5,nauu.com:8123/default";

//设置JDBC参数

ClickHouseProperties clickHouseProperties = new ClickHouseProperties();

clickHouseProperties.setUser("default");

//声明数据源

BalancedClickhouseDataSource balabced = new BalancedClickhouseDataSource(url1,clickHouseProperties);

//对每个host进行ping 操作,排除不可用的dead连接

balanced.actualize();

//活的JDBC连接

Connection con = balanced.getConnection();

Statement stme = con.creatStatement();

 //查询

ResultSet rs = stmt.executeQuery("SELECT 1,hostName()");

rs.next();

System.out.printIn("res"+rs.getInt(1)+"rs.getString(2)");

 

posted @ 2021-12-22 15:33  Azuki_op  阅读(6113)  评论(0编辑  收藏  举报