一、介绍
cliskhouse官方地址 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
/**
* 功能描述: 自己定义clickhouse连接方式,测试使用
*
* @Param: [sql]
* @Return: void
* @Author: lqfeng
* @Date: 2022/3/29 14:51
*/
public void clickhouseTest(String sql) {
Connection connection = null;
Statement statement = null;
ResultSet rs = null;
try {
//创建clickhouse连接
Class.forName("ru.yandex.clickhouse.ClickHouseDriver");
// 获取连接
connection = DriverManager.getConnection("jdbc:clickhouse://127.0.0.1:8123/test", "root", "root);
// 创建声明
statement = connection.createStatement();
// 执行sql
rs = statement.executeQuery(sql);
ResultSetMetaData rsmd = rs.getMetaData();
List<JSONObject> list = new ArrayList();
HashSet<String> objects = new HashSet<>();
while (rs.next()) {
JSONObject jsonMap = new JSONObject();
for (int i = 1; i <= rsmd.getColumnCount(); i++) {
jsonMap.put(rsmd.getColumnName(i), rs.getString(rsmd.getColumnName(i)));
}
list.add(jsonMap);
}
for (JSONObject map : list) {
System.err.println(map);
}
} catch (Exception e) {
log.info("=========clickhouse查询异常===========", e);
} finally {
try {
if (rs != null) {
rs.close();
}
if (statement != null) {
statement.close();
}
if (connection != null) {
connection.close();
}
} catch (SQLException e) {
e.printStackTrace();
}
}
// Integer result = clickhouseDao.queryInt(sql);
}
官方示例:
import com.clickhouse.jdbc.*;
import java.sql.*;
import java.util.*;
public class HelloClickHouse {
public static void main(String[] args) throws Exception {
String url = "jdbc:ch://<host>:<port>";
Properties properties = new Properties();
// properties.setProperty("ssl", "true");
// properties.setProperty("sslmode", "NONE"); // NONE to trust all servers; STRICT for trusted only
ClickHouseDataSource dataSource = new ClickHouseDataSource(url, properties);
try (Connection connection = dataSource.getConnection(<username>, <password>);
Statement statement = connection.createStatement();
ResultSet resultSet = statement.executeQuery("select * from system.tables limit 10")) {
ResultSetMetaData resultSetMetaData = resultSet.getMetaData();
int columns = resultSetMetaData.getColumnCount();
while (resultSet.next()) {
for (int c = 1; c <= columns; c++) {
System.out.print(resultSetMetaData.getColumnName(c) + ":" + resultSet.getString(c) + (c < columns ? ", " : "\n"));
}
}
}
}
}
|