docker启动clickhouse全流程操作

发布于:2024-05-07 ⋅ 阅读:(22) ⋅ 点赞:(0)

1、拉取clickhouse的镜像

docker pull clickhouse/clickhouse-server

2、启动clickhouse容器

docker run \                            
-p 8123:8123 \
-p 3500:9000 \
--name clickhouse-server \
--ulimit nofile=262144:262144 \
-e CLICKHOUSE_DB=default \
-e CLICKHOUSE_USER=root \
-e CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1 \
-e TZ=Asia/Shanghai \
-e CLICKHOUSE_PASSWORD=password \
-d clickhouse/clickhouse-server
  • –ulimit nofile=262144:262144:将进程允许打开的文件数增加到262144个
  • -p 8123:8123:ClickHouse的HTTP接口,用于执行查询、管理数据库、查看性能指标等。
  • -p 9000:9000:ClickHouse的TCP接口,用于客户端和服务端之间的数据传输。
  • -e CLICKHOUSE_DB:ClickHouse的表名。
  • -e CLICKHOUSE_USER:ClickHouse的用户名。
  • -e CLICKHOUSE_PASSWORD:ClickHouse的用户对应的密码。

java对clickhouse的基本操作

package test.base;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;

public class ClickHouseExample {
    public static void main(String[] args) {
        String url = "jdbc:clickhouse://127.0.0.1:8123/default?user=root&password=password";

        try (Connection connection = DriverManager.getConnection(url)) {
            Statement statement = connection.createStatement();
            statement.execute("CREATE TABLE test_table3(id UInt64, name String, age UInt8) ENGINE = MergeTree() ORDER BY id");
            statement.execute("INSERT INTO test_table3(id, name, age) VALUES(1, 'Alice', 30), (2, 'Bob', 25)");
            statement.execute("DELETE FROM test_table3 WHERE id = 1");
            ResultSet rs = statement.executeQuery("SELECT * FROM test_table3");
            while (rs.next()) {
                System.out.println("rs is " + rs);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}