ClickHouse访问

        常用的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版权协议,转载请附上原文出处链接和本声明。