Skip to main content

Crate sqlglot_rust

Crate sqlglot_rust 

Source
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 dialects::time::TimeFormatStyle;
pub use dialects::time::format_time;
pub use dialects::time::format_time_dialect;
pub use dialects::time::format_time_with_warnings;
pub use dialects::time::FormatConversionResult;
pub use dialects::time::TsqlStyleCode;
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.