Java API来解析/识别,但不执行SQL对一个数据库(Java API for parsing/

2019-09-24 01:56发布

我工作的建设是几乎所有Sybase和Oracle直出的SQL脚本的工作负荷自动化流程庞大的元数据字典和查找应用程序。 我需要做的就是库存,以便为在每个脚本中的每个SQL语句,并提取像声明类的东西(如INSERT,UPDATE,CREATE TABLE等),表到,从等表

我有一个原型解析应用程序中使用正则表达式大部分,做一个好工作。 编程这样的事情是超出任何噩梦繁琐,坦率地说,我宁愿在炎炎夏日之中不是覆盖所有可能的用例场景被挖3' 沟渠。 另外,我觉得我重新发明轮子。 我想肯定会有一些API在那里,如果你给它只是一个SQL语句,它会告诉你#1,如果它会编译,然后提取您的结构,可以通过正常的POJO设施访问。 像getStatementType,getFromTables()等。

我处理的都写在几乎所有的编码风格并没有标准格式的脚本,也有各种说法的形式和所代表的语法(聚合,子查询,你的名字)。

所以我的问题是:是否有一个分析SQL给定的SQL,也许它是供应商特定的返回标准化细节的API?

我知道,有针对Eclipse做类似的事情(DDL编辑和量子DB)的插件,所以我想我可以偷偷一些他们的API与SQL识别处理。 思考?

Answer 1:

您可以使用ANTLR和供应商特定的或标准的一个SQL语法解析。



Answer 2:

您可以使用ZQL解析器为所有类型的SQL查询。 ZQL可以执行指定的所有SQL操作本教程



文章来源: Java API for parsing/recognition but not executing SQL against a DB