对于我当前的项目,我需要一个解析 Oracle SQL 语句的 SQL 解析器。目前我一直在使用 jsqlparser,它适用于简单的查询。但是当特定函数出现时(例如 cast() 或 (+)),解析器就会失败。
谁能推荐一个完全符合 Oracle SQL 的解析器?
最好的,威尔
原文由 Will 发布,翻译遵循 CC BY-SA 4.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 许可协议
1 回答2.4k 阅读✓ 已解决
1 回答2.3k 阅读✓ 已解决
1.4k 阅读
您是否考虑过 通用 SQL 解析器?我自己没有任何经验,但浏览他们的网站它有潜力。就我个人而言,我已经在 Eclipse Data Tools Platform 的解析器上推出了自己的构建(对不起,我不能分享,它是专有的),但现在我必须评估我上面链接的那个,因为它声称对 Oracle SQL 的覆盖范围比我的解析器可以。