6 个版本 (重大更改)
0.11.0 | 2023 年 7 月 27 日 |
---|---|
0.10.0 | 2022 年 11 月 24 日 |
0.9.1 | 2022 年 6 月 7 日 |
0.8.0 | 2022 年 2 月 20 日 |
0.7.0 | 2022 年 1 月 20 日 |
#2271 在 数据库接口
每月 30 次下载
17MB
333K SLoC
pg_parse
Rust 的 PostgreSQL 解析器,使用 实际的 PostgreSQL 服务器源 来解析 SQL 查询并返回内部 PostgreSQL 解析树。
入门
将以下内容添加到您的 Cargo.toml
[dependencies]
pg_parse = "0.11"
示例:解析查询
use pg_parse::ast::Node;
let result = pg_parse::parse("SELECT * FROM contacts");
assert!(result.is_ok());
let result = result.unwrap();
assert!(matches!(*&result[0], Node::SelectStmt(_)));
// We can also convert back to a string, if the `str` feature is enabled (enabled by default).
#[cfg(feature = "str")]
assert_eq!(result[0].to_string(), "SELECT * FROM contacts");
pg_parse 和 pg_query.rs 之间的区别是什么?
pganalyze
组织维护官方实现:pg_query.rs
。这非常接近团队发布的 C 库的名称(libpg_query
)。此实现使用 libpg_query
版本 13 引入的 protobuf 接口。
此库类似地消耗 libpg_query
,但利用旧的 JSON 接口进行解析管理。此库的目的是保持一个依赖性“轻”实现,其中 serde
和 serde_json
是唯一的运行时依赖。
那么你应该使用哪一个?你可能想使用官方的 pg_query.rs
库,因为这个库将保持与 libpg_query
更新的紧密同步。此库将继续维护,但可能不如官方实现更新。
致谢
非常感谢 Lukas Fittl 为创建 libpg_query 所做的所有出色工作。