clickhouse的简单介绍及使用
参考:https://blog.csdn.net/qq_44275894/article/details/123973699
https://www.python100.com/html/Z6I9KX44N06H.html
一、介绍
cliskhouse官方地址(https://clickhouse.com/)
ClickHouse 是一个真正的面向列的 数据库管理系统 (DBMS),用于查询的在线分析处理 (OLAP)。
数据按列存储,并且在执行数组(向量或列块)期间存储。只要有可能,操作就会被发送到数组上,而不是单个值上。它被称为“向量化查询执行”,它有助于降低实际数据处理的成本。
二、安装
注意:
ClickHouse 可以在任何具有 x86_64、AArch64 或 PowerPC64LE CPU 架构的 Linux、FreeBSD 或 Mac OS X 上运行
1、下载
在本地下载 ClickHouse 最简单的方法是运行以下命令。如果您的操作系统受支持,则会下载相应的 ClickHouse 二进制文件并使其可执行:
curl https://clickhouse.com/ | sh
服务器环境下,也可采用如下方式:
- 获取安装包,并上传至服务器
- 使用root用户登录后,执行sh 文件名进行安装,等待出现ClickHouse Install Complete! 即表示安装完成
2、启动
./clickhouse server
3、查看及操作
详细sql文档,可以移步官方
ClickHouse 服务启动命令 : systemctl start clickhouse-server ClickHouse 服务停止命令 : systemctl stop clickhouse-server ClickHouse 服务重启命令 : systemctl restart clickhouse-server 查看ClickHouse 服务状态命令 : systemctl status clickhouse-server
三、在Java中使用
1、如果是maven项目,可以在pom中添加坐标
<dependency> <groupId>ru.yandex.clickhouse</groupId> <artifactId>clickhouse-jdbc</artifactId> <version>0.2.6</version> </dependency>
或者下载好jar 包,add to libraries
2、连接clickhouse
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; public class ClickhouseConnection { public static void main(String[] args) { String url = "jdbc:clickhouse://localhost:8123/default"; String user = "default"; String password = ""; try (Connection conn = DriverManager.getConnection(url, user, password)) { System.out.println("连接成功"); } catch (SQLException e) { e.printStackTrace(); } } }
3创建表
连接到clickhouse后,可以使用SQL语句创建表。clickhouse支持的数据类型非常丰富,需要根据具体需求选择合适的数据类型。以下是一个创建表的示例代码:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class CreateTable { public static void main(String[] args) { String url = "jdbc:clickhouse://localhost:8123/default"; String user = "default"; String password = ""; String sql = "CREATE TABLE test_table (id Int32, name String, age Int32) ENGINE = MergeTree() ORDER BY id"; try (Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement()) { stmt.executeUpdate(sql); System.out.println("表创建成功"); } catch (SQLException e) { e.printStackTrace(); } } }
以上代码创建了一个名为test_table的表,包含三个字段:id、name和age。其中id和age的数据类型为Int32,name的数据类型为String。表创建使用了MergeTree引擎,并以id字段为排序键。如果表创建成功,将输出“表创建成功”。
4.建立表的索引
在clickhouse中,可以使用索引对数据进行快速查找,提高查询效率。以下是一个为表创建索引的示例代码:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement; public class CreateIndex { public static void main(String[] args) { String url = "jdbc:clickhouse://localhost:8123/default"; String user = "default"; String password = ""; String sql = "CREATE INDEX index_name ON test_table (name) TYPE bloom_filter"; try (Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement()) { stmt.executeUpdate(sql); System.out.println("索引创建成功"); } catch (SQLException e) { e.printStackTrace(); } } }
以上代码为test_table表的name字段创建了一个名为index_name的布隆过滤器索引。如果索引创建成功,将输出“索引创建成功”。
5、向表中插入数据
表创建和索引创建完成后,可以向表中插入数据。以下是一个向表中插入数据的示例代码:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.SQLException; public class InsertData { public static void main(String[] args) { String url = "jdbc:clickhouse://localhost:8123/default"; String user = "default"; String password = ""; String sql = "INSERT INTO test_table (id, name, age) VALUES (?, ?, ?)"; try (Connection conn = DriverManager.getConnection(url, user, password); PreparedStatement ps = conn.prepareStatement(sql)) { ps.setInt(1, 1); ps.setString(2, "张三"); ps.setInt(3, 18); ps.executeUpdate(); ps.setInt(1, 2); ps.setString(2, "李四"); ps.setInt(3, 20); ps.executeUpdate(); System.out.println("数据插入成功"); } catch (SQLException e) { e.printStackTrace(); } } }
以上代码向test_table表中插入两条数据,分别为id为1的张三和id为2的李四。如果数据插入成功,将输出“数据插入成功”。
6、查询数据
最后,使用SELECT语句查询表中数据。以下是一个查询表数据的示例代码:
import java.sql.Connection; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; public class QueryData { public static void main(String[] args) { String url = "jdbc:clickhouse://localhost:8123/default"; String user = "default"; String password = ""; String sql = "SELECT * FROM test_table"; try (Connection conn = DriverManager.getConnection(url, user, password); Statement stmt = conn.createStatement(); ResultSet rs = stmt.executeQuery(sql)) { while (rs.next()) { System.out.println(rs.getInt("id") + "\t" + rs.getString("name") + "\t" + rs.getInt("age")); } } catch (SQLException e) { e.printStackTrace(); } } }
以上代码查询test_table表中的数据,并按照id、name、age的顺序输出结果。如果查询成功,将输出查询结果。
总结
本文介绍了如何使用java连接到clickhouse,并实现表创建、索引创建、数据插入和数据查询等操作。在clickhouse中,使用JDBC API非常方便地进行数据操作,有助于快速处理大规模数据。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?