Пожалуйста, посетите веб-сайт. JSqlParser — это анализатор операторов 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 и вносит критические изменения API для посетителей AST. Подробности смотрите в Руководстве по миграции.
JSqlParser стремится поддерживать стандарт SQL, а также все основные СУБД. Любой недостающий синтаксис или функции могут быть добавлены по требованию.
СУБД | Заявления |
---|---|
Оракул MS SQL-сервер и Sybase Постгрес MySQL и МарияДБ DB2 H2, HSQLDB и Дерби SQLite | SELECT INSERT , UPDATE , UPSERT , MERGE DELETE , TRUNCATE TABLE CREATE ... , ALTER .... , DROP ... WITH ... |
Salesforce SOQL | INCLUDES , EXCLUDES |
JSqlParser также можно использовать для создания операторов SQL из кода Java с помощью гибкого API (см. Примеры).
Если вам нравится JSqlParser, ознакомьтесь с связанными с ним проектами:
JSQLFormatter для красивой печати и форматирования текста SQL.
JSQLTranspiler для перезаписи диалектов, разрешения столбцов SQL и происхождения
General SQL Parser выглядит довольно хорошо, с расширенным синтаксисом SQL (например, PL/SQL и T-SQL) и API-интерфейсами Java + .NET. Инструмент является коммерческим (лицензия доступна в Интернете) с возможностью бесплатной загрузки.
В качестве альтернативы JOOQ с двойной лицензией предоставляет написанный вручную парсер, поддерживающий множество СУБД, перевод между диалектами, преобразование SQL, который можно использовать в качестве прокси-сервера JDBC для целей перевода и преобразования.
JSqlParser имеет двойную лицензию LGPL V2.1 или Apache Software License, версия 2.0 .