Skip to content

JSQLParser/JSqlParser

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

Signed-off-by: Andreas Reichel <andreas@manticore-projects.com>
7e7b484

Git stats

Files

Permalink
Failed to load latest commit information.

JSqlParser (4.6 Stable or 4.7 Snapshot) drawing

Build Status

Build Status (Legacy) Coverage Status Codacy Badge Maven Central Javadocs

Gitter

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.