Repolode
AfterShip

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. 1

    使用 Go 安装命令行工具

    go install github.com/AfterShip/clickhouse-sql-parser@latest
  2. 2

    在 macOS 上可改用 Homebrew 安装

    brew install clickhouse-sql-parser
  3. 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 数据每日更新。

相关项目