LeptonTech.SqlParser
0.63.1-preview.5
dotnet add package LeptonTech.SqlParser --version 0.63.1-preview.5
NuGet\Install-Package LeptonTech.SqlParser -Version 0.63.1-preview.5
<PackageReference Include="LeptonTech.SqlParser" Version="0.63.1-preview.5" />
<PackageVersion Include="LeptonTech.SqlParser" Version="0.63.1-preview.5" />
<PackageReference Include="LeptonTech.SqlParser" />
paket add LeptonTech.SqlParser --version 0.63.1-preview.5
#r "nuget: LeptonTech.SqlParser, 0.63.1-preview.5"
#:package LeptonTech.SqlParser@0.63.1-preview.5
#addin nuget:?package=LeptonTech.SqlParser&version=0.63.1-preview.5&prerelease
#tool nuget:?package=LeptonTech.SqlParser&version=0.63.1-preview.5&prerelease
LeptonTech.SqlParser
Parser SQL para .NET: port em C# do sqlparser-rs (Rust), com o mesmo comportamento do original. Lê SQL de 16 dialetos, gera a AST, devolve o SQL como texto (inclusive formatado) e oferece visitors, reescrita e análise sintática.
netstandard2.0: roda no .NET Framework 4.8 e no .NET 8/10, sem dependências nativas nem pacotes de runtime.- Duas DLLs no mesmo pacote:
LeptonTech.SqlParser.Core.dll(port fiel do Rust: tokenizer, dialetos, parser, AST) eLeptonTech.SqlParser.dll(API pública:SqlQueryParser,ToSql, visitors, análise). - A versão acompanha o sqlparser-rs:
0.63.xcorresponde ao Rustv0.63. A0.63.1-preview.5inclui omaindo Rust até o commit9119ec6. - Namespaces
LeptonTech.SqlParser(API pública) eLeptonTech.SqlParser.Core*(port fiel). Versões anteriores, nunca publicadas no nuget.org: até a0.63.1-preview.2,LeptonTI.SqlParser, com os namespacesSqlParsereSqlParser.Core; na0.63.1-preview.3,Lepton.SqlParser. - Código-fonte, changelog e documentação: github.com/lepton-tech/lepton-sqlparser-csharp.
Exemplo
using LeptonTech.SqlParser; // SqlQueryParser, SqlParseException, ToSql, visitors, análise
using LeptonTech.SqlParser.Core.Ast; // Statement, SetExpr, Expr, ObjectName...
using LeptonTech.SqlParser.Core.Dialects; // GenericDialect, PostgreSqlDialect, MsSqlDialect...
var parser = new SqlQueryParser();
// Dialeto padrão (GenericDialect), por instância ou por nome
var statements = parser.Parse("select a, b from t where x = 1");
var pg = parser.Parse("SELECT a::INT FROM t WHERE b ILIKE '%x%'", new PostgreSqlDialect());
var ms = parser.Parse("SELECT TOP 5 [nome] FROM [dbo].[clientes]", "mssql");
Console.WriteLine(statements.ToSql()); // SELECT a, b FROM t WHERE x = 1
Console.WriteLine(statements[0].ToSql(pretty: true)); // uma cláusula por linha, indentação de 2 espaços
// Erros com linha e coluna
if (!parser.TryParse("SELECT * FROM t WHERE x = = 1", out _, out var error))
{
Console.WriteLine($"{error.Line}:{error.Column} {error.Message}");
// 1:27 sql parser error: Expected: an expression, found: = at Line: 1, Column: 27
}
// Análise sintática
var tabelas = parser.Parse("SELECT * FROM a JOIN b ON a.id = b.id").GetReferencedTables(); // a, b
Também há SqlVisitor (ganchos PreVisit*/PostVisit* e ControlFlow), SqlRewriter (devolve uma árvore nova; a AST é imutável), atalhos com lambdas (VisitRelations, VisitExpressions, RewriteRelations...), GetReferencedColumns, GetReferencedFunctions, GetStatementKind e ParseWithComments.
Dialetos
generic, ansi, postgresql (postgres), mysql, mssql, sqlite, snowflake, bigquery, clickhouse, duckdb, databricks, hive, redshift, spark (sparksql), oracle e teradata, com as classes GenericDialect, AnsiDialect, PostgreSqlDialect, MySqlDialect, MsSqlDialect, SQLiteDialect, SnowflakeDialect, BigQueryDialect, ClickHouseDialect, DuckDbDialect, DatabricksDialect, HiveDialect, RedshiftSqlDialect, SparkSqlDialect, OracleDialect e TeradataDialect.
Compatibilidade
- Consumidores com C# 7.3 (padrão em projetos antigos do .NET Framework) usam a biblioteca normalmente;
witheinitnos records exigemLangVersion9 ou superior. - As diferenças conhecidas em relação ao Rust são poucas e de baixo impacto (classificação Unicode de identificadores sem aspas fora do ASCII comum, proteção de pilha em outra thread, ausência da feature
bigdecimal). A lista completa (DIV-NNN) está emdocs/port/divergencias.md, no repositório. - Árvores muito profundas (milhares de
ORou deUNION ALL): o parse, oToSql()e os visitors funcionam, mas os ganchos dos visitors podem rodar em outra thread (não use controles de UI dentro deles), e==/Equals/GetHashCodedos nós não têm proteção de pilha e podem derrubar o processo. Para comparar ASTs de origem desconhecida, compareToSql(). - Os símbolos de depuração (PDB portátil) vão embutidos nas DLLs.
Licença e atribuição
Apache License 2.0. Este pacote contém código traduzido do sqlparser-rs (Apache-2.0, The Apache Software Foundation) e não é afiliado nem endossado pela Apache Software Foundation. Os arquivos NOTICE, THIRD-PARTY-NOTICES.md e licenses/ (sqlparser-rs, SqlParser-cs, Unicode) vão dentro do pacote.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 0.63.1-preview.5 | 67 | 10/23/2026 |
| 0.63.1-preview.4 | 70 | 10/19/2026 |
Port of sqlparser-rs through commit 9119ec6 (after v0.63.0); public API phases 1 and 2. See CHANGELOG.md in the source repository.