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)");