SQL dialect

DuckDB SQL Parser for Java and .NET

General SQL Parser (GSP) parses DuckDB with a dedicated, hand-tuned grammar — full AST access, offline syntax validation, formatting, rewriting, and column-level data lineage . One commercial SDK, 38 dialects, Java and .NET.

Weekly
release cadence — dialect fixes ship in days

Example

DuckDB SQL that GSP parses

SELECT * FROM cities
PIVOT (SUM(population) FOR year IN (2000, 2010, 2020));

Parse it in Java

import gudusoft.gsqlparser.*;

TGSqlParser parser = new TGSqlParser(EDbVendor.dbvduckdb);
parser.sqltext = sql; // the DuckDB SQL above
if (parser.parse() == 0) {
    System.out.println(parser.sqlstatements.size() + " statement(s) parsed");
} else {
    System.out.println(parser.getErrormessage());
}

The .NET edition exposes the same API in C# — see the C# quick start.

Coverage

What GSP handles in DuckDB

Beyond parsing, the same AST powers table/column extraction, validation, formatting, and column-level lineage for DuckDB.

Actively maintained

Recent DuckDB parser updates

Full history in the release notes.

Go deeper

DuckDB resources

Common questions

Do I need a DuckDB database connection to validate SQL?

No. GSP validates DuckDB syntax completely offline. You get error line and column positions, the offending token, and a hint — with no server, driver, or credentials involved.

Can I use the DuckDB parser from C# / .NET?

Yes. The .NET edition (NuGet package gudusoft.gsqlparser, .NET Standard 2.0) exposes the same API surface as the Java edition, so every DuckDB parsing feature on this page works in C# and VB.NET.

Can GSP extract column-level lineage from DuckDB SQL?

Yes. The built-in DataFlowAnalyzer produces column-level lineage, impact analysis, and call graphs from DuckDB scripts — it is the engine behind Gudu SQLFlow and the lineage integrations for DataHub and OpenMetadata.