JSqlParser (4.6 Stable or 4.7 Snapshot) ![drawing](src/site/sphinx/_images/logo-no-background.svg)
Summary
Please visit the WebSite. JSqlParser is a RDBMS agnostic SQL statement parser. It translates SQL statements into a traversable hierarchy of Java classes (see Samples):
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());
}
Supported Grammar and Syntax
JSqlParser aims to support the SQL standard as well as all major RDBMS. Any missing syntax or features can be added on demand.
RDBMS | Statements |
---|---|
Oracle MS SQL Server and Sybase PostgreSQL MySQL and MariaDB DB2 H2 and HSQLDB and Derby SQLite |
SELECT INSERT , UPDATE , UPSERT , MERGE DELETE , TRUNCATE TABLE CREATE ... , ALTER .... , DROP ... WITH ... |
JSqlParser can also be used to create SQL Statements from Java Code with a fluent API (see Samples).
Alternatives to JSqlParser?
General SQL Parser looks pretty good, with extended SQL syntax (like PL/SQL and T-SQL) and java + .NET APIs. The tool is commercial (license available online), with a free download option.
Documentation
Samples
Build Instructions
Contribution
Change Log
Issues
License
JSqlParser is dual licensed under LGPL V2.1 or Apache Software License, Version 2.0.