AfterShip/clickhouse-sql-parser
一个 Go 库和命令行工具,可将 ClickHouse 方言的 SQL 解析为类型化 AST,并支持格式化与美化。
- Star
- 255
- Fork
- 62
- 未关闭 Issue
- 1
- 最近提交
- 3天前
这是什么?
clickhouse-sql-parser 用 Go 将 ClickHouse SQL 语句解析为类型化的抽象语法树(AST)。它既可以作为库导入,也可以作为命令行工具使用:输出 AST、生成紧凑的单行格式,或按缩进和换行美化查询。
库提供了 ParseStmts 解析接口、可将 AST 节点还原为 SQL 的格式化函数,以及 Walk、WalkWithBreak、Find、FindAll、Transform 等遍历工具,便于以编程方式检查或改写查询,无需自行编写语法解析器。
项目受 Spanner 的 Go 语言 SQL 解析器 memefish 启发。新增语法时,会用 clickhouse-local 验证结果。
核心功能
- 01将 ClickHouse SQL 语句解析为类型化的 Go AST。
- 02可将 AST 节点还原为 SQL 字符串。
- 03支持按缩进和换行美化查询。
- 04提供 Walk、Find、FindAll、Transform 等遍历与改写工具。
- 05同时提供 Go 库和命令行工具,可通过 go install 或 Homebrew 安装。
适用场景
- 对 ClickHouse 查询进行代码检查或静态分析。
- 通过检查查询引用的表实现访问控制。
- 在执行前以编程方式改写查询。
- 在编辑器或流水线中格式化 ClickHouse SQL。
快速上手
- 1
使用 Go 安装命令行工具
go install github.com/AfterShip/clickhouse-sql-parser@latest - 2
在 macOS 上可改用 Homebrew 安装
brew install clickhouse-sql-parser - 3
解析或格式化查询
clickhouse-sql-parser -beautify "SELECT * FROM clickhouse WHERE a=100"
使用前须知
- 仅支持 ClickHouse 方言语法,较新或特殊的 SQL 可能无法解析。
收录于专题
标签
常见问题
- clickhouse-sql-parser 是什么?
- 一个 Go 库和命令行工具,可将 ClickHouse 方言的 SQL 解析为类型化 AST,并支持格式化与美化。 clickhouse-sql-parser 用 Go 将 ClickHouse SQL 语句解析为类型化的抽象语法树(AST)。它既可以作为库导入,也可以作为命令行工具使用:输出 AST、生成紧凑的单行格式,或按缩进和换行美化查询。
- clickhouse-sql-parser 可以免费使用吗?用的什么许可证?
- clickhouse-sql-parser 以 MIT 许可证开源。用于商业产品前,请先确认许可证条款。
- clickhouse-sql-parser 还在维护吗?
- 活跃维护中。clickhouse-sql-parser 最近一次提交是在 2026年11月4日。
- clickhouse-sql-parser 适合用来做什么?
- 对 ClickHouse 查询进行代码检查或静态分析。 通过检查查询引用的表实现访问控制。 在执行前以编程方式改写查询。 在编辑器或流水线中格式化 ClickHouse SQL。
- clickhouse-sql-parser 怎么安装和运行?
- 使用 Go 安装命令行工具: go install github.com/AfterShip/clickhouse-sql-parser@latest 在 macOS 上可改用 Homebrew 安装: brew install clickhouse-sql-parser 解析或格式化查询: clickhouse-sql-parser -beautify "SELECT * FROM clickhouse WHERE a=100"
- 在哪里获取 clickhouse-sql-parser?
- 源代码和安装说明在 GitHub 上:https://github.com/AfterShip/clickhouse-sql-parser
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
基于 Rust 和 WASM 的 SQL 转译工具,支持 30 多种 SQL 方言之间的解析、生成、转换与格式化。
999+1 本周76RustMIT更新于 4天前
用 PHP 编写的 PHP 解析器,可将源码转换为抽象语法树,用于静态分析与代码改写。
1.7万+1 本周1145PHPBSD-3-Clause维护活跃更新于 前天
一款基于抽象语法树的命令行工具,用于代码结构搜索、Lint 检查和批量重写。
1.6万+68 本周494RustMIT更新于 18小时前
对 TypeScript 编译器 API 的封装,用于静态分析和以编程方式修改 TypeScript、JavaScript 代码。
6224+5 本周249TypeScriptMIT更新于 上个月
支持 Java 1 至 Java 25 的解析器,可生成抽象语法树,并附带符号解析与类型分析能力。
6173+1 本周1278JavaOther更新于 19小时前