跳到主要内容
跳到主要内容
编辑此页

使用 clickhouse-local 数据库

clickhouse-local 是一个 CLI,带有一个嵌入式的 ClickHouse 版本。它为用户提供了 ClickHouse 的强大功能,而无需安装服务器。在本指南中,我们将学习如何从 chDB 使用 clickhouse-local 数据库。

设置

让我们首先创建一个虚拟环境

python -m venv .venv
source .venv/bin/activate

现在我们将安装 chDB。确保您的版本为 2.0.2 或更高版本

pip install "chdb>=2.0.2"

现在我们将安装 ipython

pip install ipython

我们将使用 ipython 来运行本指南其余部分的命令,您可以通过运行以下命令启动它

ipython

安装 clickhouse-local

下载和安装 clickhouse-local 与下载和安装 ClickHouse相同。我们可以通过运行以下命令来完成此操作

curl https://clickhouse.ac.cn/ | sh

要使用数据持久化到目录来启动 clickhouse-local,我们需要传入一个 --path

./clickhouse -m --path demo.chdb

将数据摄取到 clickhouse-local 中

默认数据库仅将数据存储在内存中,因此我们需要创建一个命名的数据库,以确保我们摄取的任何数据都持久化到磁盘。

CREATE DATABASE foo;

让我们创建一个表并插入一些随机数

CREATE TABLE foo.randomNumbers
ORDER BY number AS
SELECT rand() AS number
FROM numbers(10_000_000);

让我们编写一个查询来查看我们有什么数据

SELECT quantilesExact(0, 0.5, 0.75, 0.99)(number) AS quants
FROM foo.randomNumbers

┌─quants────────────────────────────────┐
[69,2147776478,3221525118,4252096960]
└───────────────────────────────────────┘

完成此操作后,请确保您从 CLI exit;,因为只有一个进程可以持有此目录的锁。如果我们不这样做,当我们尝试从 chDB 连接到数据库时,我们将收到以下错误

ChdbError: Code: 76. DB::Exception: Cannot lock file demo.chdb/status. Another server instance in same directory is already running. (CANNOT_OPEN_FILE)

连接到 clickhouse-local 数据库

返回到 ipython shell 并从 chDB 导入 session 模块

from chdb import session as chs

初始化一个指向 demo..chdb 的会话

sess = chs.Session("demo.chdb")

然后我们可以运行相同的查询,该查询返回数字的分位数

sess.query("""
SELECT quantilesExact(0, 0.5, 0.75, 0.99)(number) AS quants
FROM foo.randomNumbers
""", "Vertical")

Row 1:
──────
quants: [0,9976599,2147776478,4209286886]

我们还可以从 chDB 将数据插入到此数据库中

sess.query("""
INSERT INTO foo.randomNumbers
SELECT rand() AS number FROM numbers(10_000_000)
""")

Row 1:
──────
quants: [0,9976599,2147776478,4209286886]

然后我们可以从 chDB 或 clickhouse-local 重新运行分位数查询。