Crate sqlparser

source ·
Expand description

§SQL Parser for Rust

This crate provides an ANSI:SQL 2011 lexer and parser that can parse SQL into an Abstract Syntax Tree (AST). See the sqlparser page for more information.

For more information:

  1. Parser::parse_sql and Parser::new for the Parsing API
  2. ast for the AST structure
  3. Dialect for supported SQL dialects

§Example parsing SQL text

use sqlparser::dialect::GenericDialect;
use sqlparser::parser::Parser;

let dialect = GenericDialect {}; // or AnsiDialect

let sql = "SELECT a, b, 123, myfunc(b) \
           FROM table_1 \
           WHERE a > b AND b < 100 \
           ORDER BY a DESC, b";

let ast = Parser::parse_sql(&dialect, sql).unwrap();

println!("AST: {:?}", ast);

§Creating SQL text from AST

This crate allows users to recover the original SQL text (with comments removed, normalized whitespace and identifier capitalization), which is useful for tools that analyze and manipulate SQL.

let sql = "SELECT a FROM table_1";

// parse to a Vec<Statement>
let ast = Parser::parse_sql(&GenericDialect, sql).unwrap();

// The original SQL text can be generated from the AST
assert_eq!(ast[0].to_string(), sql);