关于 chdb-sql
用于在 Python 中通过 chdb 执行 ClickHouse SQL 的技能,无需启动服务器。它为 Python 用户介绍单次查询、使用 Session 进行有状态分析,以及通过 DB-API 2.0 连接文件、数据库和云存储。
主要功能
- 01在 Python 中运行 ClickHouse SQL
- 02查询文件、数据库和云存储
- 03通过 Session 进行持久或内存分析
- 04使用 DB-API 2.0 连接
- 05跨数据源关联数据
适用场景
- 01在 Python 脚本中查询 Parquet 文件
- 02使用 Session 构建多步分析
- 03通过 DB-API 连接访问数据库
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ clickhouse/ agent-skills --skill chdb-sql安装后在 Claude Code 中输入/chdb-sql确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
metadata.jsonREADME.mdexamples/examples.mdreferences/api-reference.mdsql-functions.mdtable-functions.mdscripts/verify_install.py详细介绍
chdb SQL — 在 Python 进程中运行 ClickHouse
直接在 Python 中运行 ClickHouse SQL — 无需服务器。使用完整的 ClickHouse SQL 功能查询本地文件、远程数据库和云存储。
pip install chdb
决策树:选择合适的 API
1. One-off query on files or databases → chdb.query()
2. Multi-step analysis with tables → Session
3. DB-API 2.0 connection → chdb.connect()
4. Pandas-style DataFrame operations → Use chdb-datastore skill instead
chdb.query() — 一行代码,查询任意数据
import chdb
chdb.query("SELECT * FROM file('data.parquet', Parquet) WHERE price > 100 LIMIT 10") # local files
chdb.query("SELECT * FROM mysql('db:3306', 'shop', 'orders', 'root', 'pass')") # databases
chdb.query("SELECT * FROM s3('s3://bucket/data.parquet', NOSIGN) LIMIT 10") # cloud storage
chdb.query("SELECT * FROM deltaLake('s3://bucket/delta/table', NOSIGN) LIMIT 10") # data lakes
# Cross-source join
chdb.query("""
SELECT u.name, o.amount FROM mysql('db:3306', 'crm', 'users', 'root', 'pass') AS u
JOIN file('orders.parquet', Parquet) AS o ON u.id = o.user_id ORDER BY o.amount DESC
""")
data = {"name": ["Alice", "Bob"], "score": [95, 87]}
chdb.query("SELECT * FROM Python(data) ORDER BY score DESC") # Python data
df = chdb.query("SELECT * FROM numbers(10)", "DataFrame") # output formats
chdb.query("SELECT toDate({d:String}) + number FROM numbers({n:UInt64})",
"DataFrame", params={"d": "2025-01-01", "n": 30}) # parametrized
表函数 → table-functions.md | SQL 函数 → sql-functions.md | 完整 API → api-reference.md
Session — 有状态分析流水线
from chdb import session as chs
sess = chs.Session("./analytics_db") # persistent; Session() for in-memory
sess.query("CREATE TABLE users ENGINE=MergeTree() ORDER BY id AS SELECT * FROM mysql('db:3306','crm','users','root','pass')")
sess.query("CREATE TABLE events ENGINE=MergeTree() ORDER BY (ts,user_id) AS SELECT * FROM s3('s3://logs/events/*.parquet',NOSIGN)")
sess.query("""
SELECT u.country, count() AS cnt, uniqExact(e.user_id) AS users
FROM events e JOIN users u ON e.user_id = u.id
WHERE e.ts >= today() - 7 GROUP BY u.country ORDER BY cnt DESC
""", "Pretty").show()
sess.close()
Connection API(DB-API 2.0)
from chdb import dbapi
conn = dbapi.connect()
cur = conn.cursor()
cur.execute("SELECT * FROM file('data.parquet', Parquet) WHERE value > 100")
print(cur.fetchall())
cur.close()
conn.close()
故障排查
| 问题 | 解决方法 |
|---|---|
ImportError: No module named 'chdb' | pip install chdb |
DB::Exception: FILE_NOT_FOUND | 检查文件路径;使用绝对路径或确认当前工作目录 |
DB::Exception: Unknown table function | 检查函数名称拼写(例如,deltaLake 而不是 deltalake) |
| 连接远程数据库时被拒绝 | 检查 host:port 格式;确保远程数据库允许连接 |
| 环境检查 | 运行 python scripts/verify_install.py(在技能目录中) |
参考资料
- API 参考 — query/Session/connect 签名
- 表函数 — 所有 ClickHouse 表函数
- SQL 函数 — 常用 SQL 函数
- 示例 — 9 个可运行示例及预期输出
- 官方文档
注意:本技能介绍如何使用 chdb SQL。 如需执行 pandas 风格的操作,请使用
chdb-datastore技能。 如需为 chdb 源代码做贡献,请参阅项目根目录中的 CLAUDE.md。
评论
支持 Markdown