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 所做的所有出色工作。