8 个版本
0.3.3 | 2022年7月26日 |
---|---|
0.3.2 | 2022年6月27日 |
0.2.0 | 2022年6月13日 |
0.1.2 | 2022年6月6日 |
#37 in #sql-parser
每月 25 次下载
在 frazzers-utils 中使用
130KB
2.5K SLoC
Rust 的 SQL 解析器和格式化工具
示例
解析 SQL 语句
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);
格式化简单的 SELECT 语句
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);
输出
SELECT a,
b,
123,
myfunc(b)
FROM table_1
WHERE a > b
AND b < 100
ORDER BY a DESC
格式化多个语句
use sqlparse::{FormatOption, Formatter};
let sql = "SELECT firstname, lastname, email FROM employees WHERE employeeNumber = 1056; UPDATE employees SET email = '[email protected]' WHERE employeeNumber = 1056;";
let mut formatter = FormatOption::default_reindent();
formatter.reindent_aligned = true;
let formatted_sql = f.format(sql, &mut formatter);
println!("{}", formatted_sql);
输出
SELECT firstname,
lastname,
email
FROM employees
WHERE employeeNumber = 1056;
UPDATE employees
SET email = 'mary.patterson@classicmodelcars.com'
WHERE employeeNumber = 1056;
更多示例请查看 examples
目录
依赖项
~2.2–3MB
~53K SLoC