JSqlParser
jsqlparser-5.0
请访问网站。 JSqlParser是一个与 RDBMS 无关的 SQL 语句解析器。它将 SQL 语句转换为可遍历的 Java 类层次结构(请参阅示例):
SELECT 1 FROM dual WHERE a = b
SQL Text
└─Statements: statement.select.PlainSelect
├─selectItems: statement.select.SelectItem
│ └─LongValue: 1
├─Table: dual
└─where: expression.operators.relational.EqualsTo
├─Column: a
└─Column: b
String sqlStr = "select 1 from dual where a=b" ;
PlainSelect select = ( PlainSelect ) CCJSqlParserUtil . parse ( sqlStr );
SelectItem selectItem =
select . getSelectItems (). get ( 0 );
Assertions . assertEquals (
new LongValue ( 1 )
, selectItem . getExpression ());
Table table = ( Table ) select . getFromItem ();
Assertions . assertEquals ( "dual" , table . getName ());
EqualsTo equalsTo = ( EqualsTo ) select . getWhere ();
Column a = ( Column ) equalsTo . getLeftExpression ();
Column b = ( Column ) equalsTo . getRightExpression ();
Assertions . assertEquals ( "a" , a . getColumnName ());
Assertions . assertEquals ( "b" , b . getColumnName ());
}
JSQLParser-4.9 是最后一个 JDK8 兼容版本。最近的 JSQLParser-5.0 依赖于 JDK11,并对 AST 访问者引入了 API 重大更改。详细信息请参阅迁移指南。
JSqlParser旨在支持 SQL 标准以及所有主要的 RDBMS。任何缺少的语法或功能都可以根据需要添加。
关系型数据库管理系统 | 声明 |
---|---|
甲骨文 MS SQL Server 和 Sybase Postgres MySQL 和 MariaDB 数据库2 H2 和 HSQLDB 以及 Derby SQLite | SELECT INSERT 、 UPDATE 、 UPSERT 、 MERGE DELETE 、 TRUNCATE TABLE CREATE ... 、 ALTER .... 、 DROP ... WITH ... |
销售人员SOQL | INCLUDES 、 EXCLUDES |
JSqlParser还可以用于通过流畅的 API 从 Java 代码创建 SQL 语句(请参阅示例)。
如果你喜欢 JSqlParser 那么请查看它的相关项目:
JSQLFormatter 用于漂亮地打印和格式化 SQL 文本
JSQLTranspiler 用于方言特定重写、SQL 列解析和沿袭
通用 SQL 解析器看起来相当不错,具有扩展的 SQL 语法(如 PL/SQL 和 T-SQL)和 java + .NET API。该工具是商业工具(在线提供许可证),并提供免费下载选项。
另外,双授权的 JOOQ 提供了一个手写的解析器,支持很多 RDBMS、方言之间的翻译、SQL 转换,可以用作 JDBC 代理来进行翻译和转换。
JSqlParser已获得LGPL V2.1或Apache Software License, Version 2.0的双重许可。