pg_query
这个 Ruby 扩展使用实际的 PostgreSQL 服务器源来解析 SQL 查询并返回内部 PostgreSQL 解析树。
此外,该扩展允许您规范化查询(用 $n 替换常量值)并将这些规范化的查询再次解析为解析树。
当您构建此扩展时,它会构建 PostgreSQL 服务器源的部分(参见libpg_query),然后将其静态链接到此扩展中。
这看起来很复杂,但这是解析所有有效 PostgreSQL 查询的唯一可靠方法。
您可以在此处找到更多示例和更长的理由:https ://pganalyze.com/blog/parse-postgresql-queries-in-ruby.html
安装
gem install pg_query
由于编译 PostgreSQL 的部分内容,在较慢的系统
上安装可能需要一段时间。预计最多需要 5 分钟。
用法
解析查询
PgQuery.parse("SELECT 1")
=> #<PgQuery::ParserResult:0x000000012ec4e9e0
@query="SELECT 1",
@tree=<PgQuery::ParseResult:
version: 160001,
stmts: [
<PgQuery::RawStmt:
stmt: <PgQuery::Node:
select_stmt: <PgQuery::SelectStmt:
distinct_clause: [],
target_list: [
<PgQuery::Node:
res_target: <PgQuery::ResTarget:
name: "",
indirection: [],
val: <PgQuery::Node:
a_const: <PgQuery::A_Const:
ival: <PgQuery::Integer: ival: 1>,
isnull: false,
location: 7
>
>,
Ruby扩展pg_query解析PostgreSQL查询

最低0.47元/天 解锁文章
2252

被折叠的 条评论
为什么被折叠?



