Oracle SQL 解析器

新手上路,请多包涵

对于我当前的项目,我需要一个解析 Oracle SQL 语句的 SQL 解析器。目前我一直在使用 jsqlparser,它适用于简单的查询。但是当特定函数出现时(例如 cast() 或 (+)),解析器就会失败。

谁能推荐一个完全符合 Oracle SQL 的解析器?

最好的,威尔

原文由 Will 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答

您是否考虑过 通用 SQL 解析器?我自己没有任何经验,但浏览他们的网站它有潜力。就我个人而言,我已经在 Eclipse Data Tools Platform 的解析器上推出了自己的构建(对不起,我不能分享,它是专有的),但现在我必须评估我上面链接的那个,因为它声称对 Oracle SQL 的覆盖范围比我的解析器可以。

原文由 ChrisH 发布,翻译遵循 CC BY-SA 3.0 许可协议

jOOQ 有一个内置的 解析器,可以解析其任何支持的数据库产品(包括 Oracle SQL)的大量 SQL。它无法解析 所有 内容,但对于大多数用例来说可能就足够了。例如,它可以解析 Oracle 外连接运算符 (+) 甚至 将其转换为 ANSI SQL可以在这里看到解析器和翻译器演示,例如:

 -- Input
SELECT *
FROM t, u
WHERE t.id = u.id(+)

-- Output
SELECT *
FROM t
  LEFT OUTER JOIN u
    ON t.id = u.id

您可以使用 网站上 的解析器、 作为 CLI 或以编程方式使用 Java、Kotlin、Scala 等:

 Select<?> select = ctx.parser().parseSelect(
    """
    SELECT *
    FROM t, u
    WHERE t.id = u.id(+)
    """
);

解析输出是普通的jOOQ API,你可以使用jOOQ的 模型API 将其转换为其他SQL

原文由 Lukas Eder 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
logo
Stack Overflow 翻译
子站问答
访问
宣传栏