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 crates.io page
for more information.
For more information:
Parser::parse_sql
andParser::new
for the Parsing APIast
for the AST structureDialect
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);
Modules§
- SQL Abstract Syntax Tree (AST) types
- SQL Parser
- SQL Tokenizer