admin

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

sql

我正在为工作负载自动化过程构建一个巨大的元数据字典和查找应用程序,这些工作流程几乎都是Sybase和Oracle直截了当的SQL脚本。我需要做的是对每个脚本中的每个SQL语句进行清点,并提取诸如语句类型(例如INSERT,UPDATE,CREATE
TABLE等),表放入表等的内容。

我有一个原型解析应用程序,该应用程序主要使用正则表达式来完成工作。进行这样的编程非常麻烦,坦率地讲,坦率地说,我宁愿在夏天中挖3’沟渠,而不是覆盖所有可能的用例场景。另外,我觉得自己正在重新发明轮子。我认为那里必须有一些API,如果仅将其提供给SQL语句,它将告诉您#1是否将进行编译,然后为您提取可通过常规POJO设施访问的结构。像getStatementType,getFromTables()等一样。

我正在处理的脚本几乎都是用所有编码风格编写的,没有标准格式,也有每种陈述形式和表示的语法(聚合,子查询,您可以为其命名)。

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

我知道有些Eclipse插件可以做类似的事情(DDL编辑器和Quantum DB),所以我想我可以偷偷溜走一些处理SQL识别的API。有什么想法吗?


阅读 125

收藏
2021-06-07

共1个答案

admin

您可以使用antlr和特定于供应商的标准SQL语法或标准sql语法之一进行解析。

2021-06-07