ウェブサイトにアクセスしてください。 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 をサポートすることを目的としています。不足している構文や機能はオンデマンドで追加できます。
RDBMS | ステートメント |
---|---|
オラクル MS SQL Server および Sybase ポストグレ MySQL と MariaDB DB2 H2 と HSQLDB と Derby SQLite | SELECT INSERT 、 UPDATE 、 UPSERT 、 MERGE テーブル DELETE 、 TRUNCATE TABLE CREATE ... 、 ALTER .... 、 DROP ... WITH ... |
Salesforce SOQL | INCLUDES 、 EXCLUDES |
JSqlParser を使用すると、流暢な API を使用して Java コードから SQL ステートメントを作成することもできます (サンプルを参照)。
JSqlParser が気に入ったら、その関連プロジェクトをチェックしてください。
SQL テキストをきれいに印刷およびフォーマットするための JSQLFormatter
方言固有の書き換え、SQL 列の解決、リネージのための JSQLTranspiler
General SQL Parser は、拡張 SQL 構文 (PL/SQL や T-SQL など) と Java + .NET API を備え、非常に優れています。このツールは商用 (ライセンスはオンラインで入手可能) で、無料ダウンロード オプションがあります。
あるいは、デュアル ライセンスの JOOQ は、多くの RDBMS、方言間の変換、SQL 変換をサポートする手書きのパーサーを提供し、変換と変換の目的で JDBC プロキシとして使用できます。
JSqlParser は、 LGPL V2.1またはApache Software License, Version 2.0に基づいてデュアル ライセンスされています。