一个 Go 库和命令行工具,可将 ClickHouse 方言的 SQL 解析为类型化 AST,并支持格式化与美化。
JSQLParser/JSqlParser
一个 Java SQL 解析器,可将 SQL 语句转换为可遍历的 Java 对象树,并能再转回 SQL 文本。
- Star
- 5,975
- Fork
- 1,446
- 未关闭 Issue
- 8
- 最近提交
- 前天
这是什么?
JSqlParser 可将 SQL 语句解析为一组 Java 类构成的层次结构,开发者能用 Visitor 模式遍历、改写,并重新输出为 SQL 文本。它与具体数据库无关,同一套语法覆盖 MySQL、PostgreSQL、Oracle、SQL Server、BigQuery、Snowflake、DuckDB、SQLite 等多种方言,并提供方言选项处理特殊语法。
除解析外,它还能判断一条语句是否返回结果集、是否会修改数据,便于实现只读保护或选择查询/更新的执行方式。也可以用流式 API 在 Java 中构造语句并输出为 SQL。Piped SQL 语法仍在持续开发中。
运行环境需要 JDK 11,通过 Maven Central 分发,文档推荐使用持续更新的 Manticore 版本。
核心功能
- 01将 SQL 解析为 Java 对象树,可用 Visitor 模式遍历
- 02可将对象模型还原为 SQL 文本
- 03支持 MySQL、PostgreSQL、Oracle、SQL Server、BigQuery 等多种方言
- 04判断语句是否返回结果集或修改数据
- 05可通过流式 API 在 Java 中构造 SQL 语句
适用场景
- 在 Java 应用中执行前改写或审计 SQL 查询
- 在只读数据库连接上拦截会修改数据的语句
- 提取查询涉及的表和字段,用于分析或血缘工具
- 用 Java 代码以编程方式生成 SQL
快速上手
- 1
在 Maven 的 pom.xml 中添加 Manticore 构建版依赖
- 2
使用 CCJSqlParserUtil.parse 解析 SQL 语句并遍历生成的语法树
使用前须知
- 从源码构建需要 JDK 17 工具链。
- README 推荐使用 Manticore 构建版,因为上游 Maven Central 发行版明显更旧。
收录于专题
标签
常见问题
- JSqlParser 是什么?
- 一个 Java SQL 解析器,可将 SQL 语句转换为可遍历的 Java 对象树,并能再转回 SQL 文本。 JSqlParser 可将 SQL 语句解析为一组 Java 类构成的层次结构,开发者能用 Visitor 模式遍历、改写,并重新输出为 SQL 文本。它与具体数据库无关,同一套语法覆盖 MySQL、PostgreSQL、Oracle、SQL Server、BigQuery、Snowflake、DuckDB、SQLite 等多种方言,并提供方言选项处理特殊语法。
- JSqlParser 可以免费使用吗?用的什么许可证?
- JSqlParser 以 Apache-2.0 许可证开源。用于商业产品前,请先确认许可证条款。
- JSqlParser 还在维护吗?
- 活跃维护中。JSqlParser 最近一次提交是在 2026年11月5日。
- JSqlParser 适合用来做什么?
- 在 Java 应用中执行前改写或审计 SQL 查询 在只读数据库连接上拦截会修改数据的语句 提取查询涉及的表和字段,用于分析或血缘工具 用 Java 代码以编程方式生成 SQL
- JSqlParser 怎么安装和运行?
- 在 Maven 的 pom.xml 中添加 Manticore 构建版依赖 使用 CCJSqlParserUtil.parse 解析 SQL 语句并遍历生成的语法树
- 在哪里获取 JSqlParser?
- 源代码和安装说明在 GitHub 上:https://github.com/JSQLParser/JSqlParser
概要由 AI 根据项目 README 生成;GitHub 数据每日更新。
相关项目
免费的浏览器端数据库结构编辑器,可绘制 ER 图并生成 SQL 脚本,无需注册账号。
免费开源的原生数据库客户端,支持 macOS 和 iOS,覆盖主流 SQL 与 NoSQL 数据库。
一款终端数据库客户端,支持 PostgreSQL、MySQL、SQLite 等,采用 vim 风格快捷键。
原生数据库 IDE,支持 macOS、Windows 和 Linux,统一连接 PostgreSQL、MySQL、SQLite、Redis 等多种数据库。
支持多种数据库的 AI 数据库客户端,同时提供 MCP 服务器供智能体查询。