Clickhouse java jdbc(一)

85 阅读1分钟

(1)docker安装clickhouse:

配置docker-compose.yml如下

version: "2"

services:

  server:
    image: clickhouse/clickhouse-server:22.8
    container_name: clickhouse
    expose:
      - 9000
      - 8123
      - 9009
    ports:
      - "8123:8123"
      - "9000:9000"
      - "9009:9009"

    ulimits:
      nproc: 65535
      nofile:
        soft: 262144
        hard: 262144
    environment:
      - TZ=Asia/Shanghai
      # - CLICKHOUSE_USER=root
      # - CLICKHOUSE_PASSWORD=123456
    volumes:
      - ./data:/var/lib/clickhouse

关于compose文件的配置可以参考官方文档: docs.docker.com/compose/com…

当然除了compose,也可以通过docker pull的方式:

clickhouse的tag: hub.docker.com/r/clickhous…

(为使用方便,这里没有配置密码,最好配置密码,)

  1. 通过docker-compose.yml文件来run容器:

docker-compose up -d

  1. 进入名字为clickhouse容器:

docker exec -it clickhouse /bin/bash

  1. 在容器起来后我们可以进入 ClickHouse 的交互式终端

clickhouse-client

  1. 顺利进入client后,我们就可以各种优雅操作了

截屏2023-03-21 21.44.22.png

sql语法参考官方文档: clickhouse.com/docs/en/sql…

这里是建了一个helloworld.my_first_table表,插入了几条测试数据

配置结束后可先测试本地是否能访问:http://localhost:8123 ---> ok(即成功)

(2)JDBC连接

和连接其他数据库类似

添加maven依赖:

<dependency>
    <groupId>com.clickhouse</groupId>
    <artifactId>clickhouse-jdbc</artifactId>
    <version>0.4.0</version>
    <!-- use uber jar with all dependencies included, change classifier to http for smaller jar -->
    <classifier>all</classifier>
    <exclusions>
        <exclusion>
            <groupId>*</groupId>
            <artifactId>*</artifactId>
        </exclusion>
    </exclusions>
</dependency>

写个简单测试类:

public void connectJdbc() throws Exception {
    String url = "jdbc:clickhouse:http://localhost:8123";
    Class.forName("com.clickhouse.jdbc.ClickHouseDriver"); //load driver

    try {
        Connection conn = DriverManager.getConnection(url, "default", "");
        Statement stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("select * from helloworld.my_first_table");
        while (rs.next()) {
            System.out.println(rs.getString(2));
        }
    } catch (Exception e) {
        throw e;
    }
}

还有其他连接方式可以参考官方文档:clickhouse.com/docs/en/int…