我正在为几乎所有 Sybase 和 Oracle 直接输出 SQL 脚本的工作负载自动化过程构建一个巨大的元数据字典和查找应用程序。我需要做的是为每个脚本中的每个 SQL 语句做一个清单,并提取语句类型(例如 INSERT、UPDATE、CREATE TABLE 等)、表中的表、表中的表等内容。
我有一个原型解析应用程序,它主要使用正则表达式来完成工作。像这样的编程比任何噩梦都乏味,坦率地说,我宁愿在夏天挖 3 英尺的沟,也不愿涵盖所有可能的用例场景。另外,我觉得我正在重新发明轮子。我认为那里一定有一些 API,如果你只提供一个 SQL 语句,它会告诉你 #1 它是否会编译,然后为你提取可以通过普通 POJO 工具访问的结构。像 getStatementType、getFromTables() 等。
我正在处理的脚本几乎是用所有编码风格编写的,并且没有标准格式,也有各种语句形式和表示的语法(聚合、子查询,你可以命名它)。
所以我的问题是:是否有一个 API 可以解析 SQL 给定的 SQL,也许它特定于哪个供应商来返回规范化的细节?
我知道 Eclipse 有一些插件可以做类似的事情(DDL 编辑器和 Quantum DB),所以我想我可以偷偷他们的一些 API 来处理 SQL 识别。想法?