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