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的雙重授權。