clickhouse-client
| 常用参数 | 说明 | 默认值 | 备注 |
|---|---|---|---|
--host, -h | 服务端的主机名 | localhost | |
--port | 端口 | 9000 | HTTP接口和TCP原生接口用的端口不同 |
--user, -u | 用户名 | default | |
--password | 密码 | 空字符串 | |
--query, -q | 非交互模式查询 | ||
--database, -d | 数据库 | 服务端默认配置 | 默认配置值为default |
--multiline, -m | 允许多行语句查询 | Enter仅代表换行,不代表查询语句完结 | |
--multiquery, -n | 允许用;分隔多个查询 | 只在非交互模式下生效 | |
--time, -t | 非交互模式下,查询的执行时间被输出到stderr | ||
--stacktrace | 如果出现异常,就打印堆栈跟踪信息 | ||
--config-file | 配置文件的名称 | ||
--secure | 使用安全方式连接到服务器 | ||
--history_file | 存放命令历史的文件的路径 | ||
--param_ | 查询参数配置查询参数 |
常用下面2组参数,1是-m在ClickHouse服务所在的机器,进入命令行交互模式
clickhouse-client -m --password '密码'
2是-q执行任务,配合-n允许多个SQL(用;分隔)
clickhouse-client -n -h '主机' --port 9000 -u '用户' --password '密码' -d '库' -q "SHOW TABLES;"
个人建议,少用
-n
SELECT version();
对于CentOS7,可去官网或国内镜像站下载clickhouse-client、clickhouse-common-static等rpm,然后安装
安装客户端
conda create -n ck_env python=3.9.12
conda activate ck_env
pip install clickhouse_driver==0.2.4
安装成功的屏幕显示
Installing collected packages: pytz, tzdata, pytz-deprecation-shim, tzlocal, clickhouse_driver
Successfully installed clickhouse_driver-0.2.4 pytz-2022.5 pytz-deprecation-shim-0.1.0.post0 tzdata-2022.5 tzlocal-4.2
连接代码
from clickhouse_driver import Client
c = Client(host='主机', port=9000, user='用户', password='密码', database='库')
result_list = c.execute('SELECT * FROM 表')
print(result_list) # list of tuple [('a2',9,datetime.date(2022,3,8)),('b3',3,datetime.date(2021,5,4))]
<dependency>
<groupId>ru.yandex.clickhousegroupId>
<artifactId>clickhouse-jdbcartifactId>
<version>0.3.2version>
dependency>
import ru.yandex.clickhouse.ClickHouseConnection;
import ru.yandex.clickhouse.ClickHouseDataSource;
import ru.yandex.clickhouse.settings.ClickHouseProperties;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
public class Main {
public static void main(String[] args) {
// 连接配置
ClickHouseProperties p = new ClickHouseProperties();
p.setUser("用户");
p.setPassword("密码");
p.setDatabase("库");
p.setSocketTimeout(30000);
String url = "jdbc:clickhouse://主机地址:8123";
ClickHouseDataSource ds = new ClickHouseDataSource(url, p);
try {
// 创建连接
ClickHouseConnection conn = ds.getConnection();
try {
Statement statement = conn.createStatement();
// 查询
ResultSet result = statement.executeQuery("SELECT * FROM 表");
while (result.next()) {
ResultSetMetaData metaData = result.getMetaData();
// 获取列,索引从1开始
for (int i = 1; i <= metaData.getColumnCount(); i++) {
String columnName = metaData.getColumnName(i);
Object data = result.getObject(columnName);
System.out.println(columnName + "=>" + data.toString());
}
System.out.println();
}
} catch (SQLException e) {
e.printStackTrace();
}
} catch (SQLException e) {
throw new RuntimeException(e);
}
}
}
jdbc:clickhouse://主机:8123/库?socket_timeout=600000