Expand description
§sqlglot-rust
A SQL parser, optimizer, and transpiler library written in Rust, inspired by Python’s sqlglot.
§Features
- Parse SQL strings into a structured AST
- Generate SQL from AST nodes
- Transpile between SQL dialects (30 dialects including MySQL, PostgreSQL, BigQuery, Snowflake, DuckDB, Hive, Spark, Presto, Trino, T-SQL, Oracle, ClickHouse, Redshift, and more)
- Optimize SQL queries
- CTEs, subqueries, UNION/INTERSECT/EXCEPT
- Window functions, CAST, EXTRACT, EXISTS
- Pretty-print SQL output
- AST traversal (walk, find, transform)
§Quick Start
use sqlglot_rust::{parse, generate, transpile, Dialect};
// Parse a SQL query
let ast = parse("SELECT a, b FROM t WHERE a > 1", Dialect::Ansi).unwrap();
// Generate SQL for a specific dialect
let sql = generate(&ast, Dialect::Postgres);
assert_eq!(sql, "SELECT a, b FROM t WHERE a > 1");
// One-step transpile between dialects
let result = transpile("SELECT a, b FROM t", Dialect::Ansi, Dialect::Postgres).unwrap();Re-exports§
pub use ast::Expr;pub use ast::MergeClauseKind;pub use ast::QuoteStyle;pub use ast::Statement;pub use builder::column;pub use builder::table;pub use builder::table_full;pub use builder::literal;pub use builder::string_literal;pub use builder::boolean;pub use builder::null;pub use builder::cast;pub use builder::and_all;pub use builder::or_all;pub use builder::not;pub use builder::func;pub use builder::func_distinct;pub use builder::eq;pub use builder::neq;pub use builder::lt;pub use builder::lte;pub use builder::gt;pub use builder::gte;pub use builder::is_null;pub use builder::is_not_null;pub use builder::between;pub use builder::in_list;pub use builder::not_in_list;pub use builder::in_subquery;pub use builder::like;pub use builder::add;pub use builder::sub;pub use builder::mul;pub use builder::div;pub use builder::star;pub use builder::qualified_star;pub use builder::subquery;pub use builder::exists;pub use builder::alias;pub use builder::parse_expr;pub use builder::parse_expr_dialect;pub use builder::parse_condition;pub use builder::parse_condition_dialect;pub use builder::condition;pub use builder::condition_dialect;pub use builder::select;pub use builder::select_all;pub use builder::select_distinct;pub use builder::ConditionBuilder;pub use builder::SelectBuilder;pub use dialects::Dialect;pub use errors::SqlglotError;pub use generator::generate;pub use generator::generate_pretty;pub use optimizer::annotate_types::TypeAnnotations;pub use optimizer::annotate_types::annotate_types;pub use optimizer::lineage::lineage;pub use optimizer::lineage::lineage_sql;pub use optimizer::lineage::LineageConfig;pub use optimizer::lineage::LineageError;pub use optimizer::lineage::LineageGraph;pub use optimizer::lineage::LineageNode;pub use optimizer::pushdown_predicates::pushdown_predicates;pub use optimizer::scope_analysis::Scope;pub use optimizer::scope_analysis::ScopeType;pub use optimizer::scope_analysis::build_scope;pub use optimizer::scope_analysis::find_all_in_scope;pub use parser::parse;
Modules§
- ast
- builder
- Expression Builder API
- dialects
- errors
- generator
- optimizer
- Query optimization passes.
- parser
- schema
- Schema management system for schema-aware analysis and optimization.
- tokens
Functions§
- transpile
- Transpile a SQL string from one dialect to another.
- transpile_
statements - Transpile a SQL string, returning multiple statements if the input contains semicolons.