Crate sqltk_parser

Crate sqltk_parser 

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 sqltk_parser crates.io 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 sqltk_parser::dialect::GenericDialect;
use sqltk_parser::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§

ast
SQL Abstract Syntax Tree (AST) types
dialect
keywords
This module defines
parser
SQL Parser
tokenizer
SQL Tokenizer