Repolode
JSQLParser

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

    在 Maven 的 pom.xml 中添加 Manticore 构建版依赖

  2. 2

    使用 CCJSqlParserUtil.parse 解析 SQL 语句并遍历生成的语法树

使用前须知

  • 从源码构建需要 JDK 17 工具链。
  • README 推荐使用 Manticore 构建版,因为上游 Maven Central 发行版明显更旧。

收录于专题

标签

#sql#parser#java#ast#database#sql-parser#visitor-pattern#hierarchy#jsqlparser#mysql

常见问题

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 脚本,无需注册账号。

开发者工具#database-design#erd#sql
4万+77 本周3357JavaScriptAGPL-3.0维护活跃更新于 19小时前