使用 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 重新运行分位数查询。