用于解析/识别但不针对数据库执行SQL的Java API

用于解析/识别但不针对数据库执行SQL的Java API,java,sql,database,parsing,Java,Sql,Database,Parsing,我正在为几乎都是Sybase和Oracle直接SQL脚本的工作负载自动化过程构建一个巨大的元数据字典和查找应用程序。我需要做的是为每个脚本中的每个SQL语句创建一个清单,并提取诸如语句类型(例如插入、更新、创建表等)、表到、表从等内容 我有一个原型解析应用程序,它大部分使用正则表达式,工作正常。编程这样的东西比任何噩梦都乏味,坦白地说,我宁愿在夏天挖3英尺深的沟,也不愿覆盖所有可能的用例场景。另外,我觉得我正在重新发明轮子。我想一定有一些API,如果你只给它一个SQL语句,它会告诉你#1它是否会

我正在为几乎都是Sybase和Oracle直接SQL脚本的工作负载自动化过程构建一个巨大的元数据字典和查找应用程序。我需要做的是为每个脚本中的每个SQL语句创建一个清单,并提取诸如语句类型(例如插入、更新、创建表等)、表到、表从等内容

我有一个原型解析应用程序,它大部分使用正则表达式,工作正常。编程这样的东西比任何噩梦都乏味,坦白地说,我宁愿在夏天挖3英尺深的沟,也不愿覆盖所有可能的用例场景。另外,我觉得我正在重新发明轮子。我想一定有一些API,如果你只给它一个SQL语句,它会告诉你#1它是否会编译然后为你提取结构,你可以通过普通的POJO工具访问它。如getStatementType、getFromTables()等

我正在处理的脚本几乎都是用所有的编码样式编写的,没有标准格式,也有各种各样的语句形式和语法(聚合、子查询,你可以说)

所以我的问题是:是否有一个API可以解析给定SQL的SQL,或者它特定于哪个供应商来返回规范化的细节

我知道Eclipse有一些插件可以做类似的事情(DDL编辑器和Quantum DB),所以我想我可以偷偷使用他们的一些API来处理SQL识别。想法?

您可以使用和供应商特定或标准之一进行解析。

您可以用于所有类型的SQL查询。
ZQL可以执行

中指定的所有SQL操作。不同产品支持的语法不同。您需要查找特定于服务器的APi。