‹ 首页

chdb-sql

@clickhouse · 收录于 昨天 · 上游提交 2 天前

Use when the user wants to run SQL — especially analytical SQL — on local files (parquet/csv/json), URLs, S3 paths, or remote databases (Postgres, MySQL, MongoDB, ClickHouse Cloud, Iceberg, Delta Lake) without setting up a server. Provides chDB — embedded ClickHouse SQL in Python with 1000+ functions, Session for stateful multi-step pipelines, parametrized queries, and cross-source joins via `s3()`, `mysql()`, `postgresql()`, `iceberg()`, `deltaLake()`, `remoteSecure()` table functions. TRIGGER when: user wants SQL on parquet/csv/files or across remote analytical sources; uses ClickHouse SQL features (window functions, windowFunnel, geoToH3, JSON path ops, Session, parametrized queries); imports `chdb` or calls `chdb.query()`. SKIP this skill for pandas-style DataFrame method-chaining (use chdb-datastore instead) or ClickHouse server administration.

适合你,如果经常需要对 Parquet/CSV 或远程数据库做探索性 SQL 查询。

/ 通过 npx 安装 校验哈希
npx oh-my-skill add clickhouse/agent-skills/chdb-sql
/ 通过 bash 安装
curl -fsSL https://oh-my-skill.com/install.sh | bash -s -- clickhouse/agent-skills/chdb-sql
/ 已经装过?验证本机副本,不用重装
npx oh-my-skill verify clickhouse/agent-skills/chdb-sql
安装目标可用 --agent / --scope 或 --to 明确指定;省略时只会在唯一已存在的 agent 目录上自动选择,零命中或多命中会停止并提示。content_hash 缺失或不一致均拒装。
498GitHub stars
~1.1K最小装载
~8.7K含声明引用
~9.1K文本包总量
索引托管

怎么用

商店整理自技能原文 · 版本 6e5458d · 表述以原文为准
它做什么

装上后,Claude 可以在 Python 中直接运行 ClickHouse SQL 查询本地文件(Parquet、CSV、JSON)、远程数据库(MySQL、Postgres、MongoDB 等)及云存储的数据,无需设置服务器。同时支持带会话的多步骤分析、参数化查询和跨源 JOIN。

什么时候触发

当用户要求对 Parquet、CSV 等文件或远程分析型数据源执行 SQL 查询,或使用 ClickHouse SQL 特性,或调用 chdb.query() 时触发。注意:若需 pandas 风格操作,应使用 chdb-datastore 技能。

装好后可以这样说
Claude 会生成跨源 JOIN 的 SQL 并执行。
Claude 会创建 Session 对象并执行多步查询。
技能原文 SKILL.md作者撰写 · Apache-2.0 · 6e5458d

chdb SQL — ClickHouse in Your Python Process

Run ClickHouse SQL directly in Python — no server needed. Query local files, remote databases, and cloud storage with full ClickHouse SQL power.

pip install chdb
Decision Tree: Pick the Right 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() — One Line, Any Data
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 → [table-functions.md](references/table-functions.md) | SQL functions → [sql-functions.md](references/sql-functions.md) | Full API → [api-reference.md](references/api-reference.md)

Session — Stateful Analysis Pipelines
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()
Troubleshooting

| Problem | Fix | |---------|-----| | ImportError: No module named 'chdb' | pip install chdb | | DB::Exception: FILE_NOT_FOUND | Check file path; use absolute path or verify cwd | | DB::Exception: Unknown table function | Check function name spelling (e.g., deltaLake not deltalake) | | Connection refused to remote DB | Check host:port format; ensure remote DB allows connections | | Environment check | Run python scripts/verify_install.py (from skill directory) |

References
  • [API Reference](references/api-reference.md) — query/Session/connect signatures
  • [Table Functions](references/table-functions.md) — All ClickHouse table functions
  • [SQL Functions](references/sql-functions.md) — Commonly used SQL functions
  • [Examples](examples/examples.md) — 9 runnable examples with expected output
  • Official Docs
Note: This skill teaches how to use chdb SQL. For pandas-style operations, use the chdb-datastore skill. For contributing to chdb source code, see CLAUDE.md in the project root.
按 Apache-2.0 许可原样转载,未经改动 · 在 GitHub 查看 →

评论

登录即可评论;带「已验证安装」的,是发布者名下有本店的安装或持有记录。