常用的ClickHouse访问有两种方式,1是CLI,就是上篇博客中讲的clickhouse-client命令,然后在命令行中写sql。2是JDBC方式,本篇主要讲JDBC方式访问ClickHouse
引jar包
pom文件需要引入clickhouse-jdbc的jar包
<dependency>
<groupId>ru.yandex.clickhouse</groupId>
<artifactId>clickhouse-jdbc</artifactId>
<version>0.2.4</version>
</dependency>
标准访问
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
public class Test {
public static void main(String[] args) throws ClassNotFoundException, SQLException {
// 初始化驱动
Class.forName("ru.yandex.clickhouse.ClickHouseDriver");
// url
String url = "jdbc:clickhouse://10.16.3.XX:8123/default";
// 用户名密码
String user = "default";
String password = "xxxx";
// 登录
Connection con = DriverManager.getConnection(url, user, password);
Statement stmt = con.createStatement();
// 查询
ResultSet rs = stmt.executeQuery("SELECT 1");
rs.next();
System.out.printf("res "+rs.getInt(1));
}
}
高可用
String url="jdbc:clickhouse://node1:8123,node2:8123,node3:8123,node4:8123,node5:8123/default";
String user = "default";
//设置JDBC参数
ClickHouseProperties clickHouseProperties = new ClickHouseProperties();
clickHouseProperties.setUser(user);
//声明数据源
BalancedClickhouseDataSource balanced = new BalancedClickhouseDataSource(url, clickHouseProperties);
//对每个host进行ping操作, 排除不可用的dead连接
balanced.actualize();
//获得JDBC连接
Connection conn = balanced.getConnection();
Statement stmt = conn.createStatement();
String sql = "XXXXX";
stmt.execute(sql)
注意:(1)以上代码段仅是部分代码。(2)如使用集群模式访问ClickHouse,插入语句可以采用批量插入的方式,否则会很慢,例如insert into XX values(),(),...。(3)node1~5需要时集群模式,搭建集群会在后续讲述
版权声明:本文为lidepan原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。