https://github.com/xxf098/sqlparse
A SQL Parser and Formatter for Rust
https://github.com/xxf098/sqlparse
parser rust sql
Last synced: 11 months ago
JSON representation
A SQL Parser and Formatter for Rust
- Host: GitHub
- URL: https://github.com/xxf098/sqlparse
- Owner: xxf098
- License: bsd-3-clause
- Created: 2022-06-06T02:09:21.000Z (almost 4 years ago)
- Default Branch: master
- Last Pushed: 2022-07-26T05:35:43.000Z (over 3 years ago)
- Last Synced: 2025-05-07T06:04:09.435Z (11 months ago)
- Topics: parser, rust, sql
- Language: Rust
- Homepage:
- Size: 94.7 KB
- Stars: 2
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# A SQL Parser and Formatter for Rust
[](https://crates.io/crates/sqlparse)
## Example
To parse a sql statement:
```rust
use sqlparse::{Parser};
let sql = "SELECT a, b, 123, myfunc(b) \
FROM table_1 \
WHERE a > b AND b < 100 \
ORDER BY a DESC, b";
// grouping
let tokens = p.parse(sql);
println!("{:?}", tokens);
// without grouping
let tokens = p.parse_no_grouping(sql);
println!("{:?}", tokens);
```
To format a simple SELECT statement:
```rust
use sqlparse::{FormatOption, Formatter};
let sql = "SELECT a, b, 123, myfunc(b) \
FROM table_1 \
WHERE a > b AND b < 100 \
ORDER BY a DESC";
let mut f = Formatter::default();
let mut options = FormatOption::default();
options.reindent = true;
options.indent_width = 2;
options.indent_char = " ";
options.reindent_aligned = true;
let formatted_sql = f.format(sql, &mut options);
println!("{}", formatted_sql);
```
outputs
```sql
SELECT a,
b,
123,
myfunc(b)
FROM table_1
WHERE a > b
AND b < 100
ORDER BY a DESC
```
To format multiple statements:
```rust
use sqlparse::{FormatOption, Formatter};
let sql = "SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056; UPDATE employees SET email = 'mary.patterson@classicmodelcars.com' WHERE employeeNumber = 1056;";
let mut formatter = FormatOption::default_reindent();
formatter.reindent_aligned = true;
let formatted_sql = f.format(sql, &mut formatter);
println!("{}", formatted_sql);
```
outputs
```sql
SELECT firstname,
lastname,
email
FROM employees
WHERE employeeNumber = 1056;
UPDATE employees
SET email = 'mary.patterson@classicmodelcars.com'
WHERE employeeNumber = 1056;
```
see more on `examples` folder