2013-04-04 53 views
5

刚刚在DTP项目中发现了SQL Query Parser类,它看起来像一个伟大的(和独特的)项目。Eclipse数据工具项目 - SQL查询解析器

我的问题是,我需要分析,看看我是否可以合并一些大的系统中使用的漂亮毛茸茸的SQL片段。我需要一个智能且有能力的解析器,以便我可以执行准确的分析并确定是否可以将这些片段中的某些碎片连接在一起以提高性能。我已经想出了我需要执行的分析;但是,解析器不能解析这些片段,因为它们使用特定的db2 OLAP函数(over(),partition by等),所以我需要将db2插件包含到我的代码中。

这是如何完成的?我无法在任何地方找到课程(org.eclipse.datatools.sqltools.parsers.sql.query.db2.*),我也不知道如何注册(我试图手动完成,但当然找不到合适的课程)。

这是目前我在做什么,我知道错了,但我还没有发现的文件吧:

SQLQueryParserManagerProvider provider = SQLQueryParserManagerProvider 
     .getInstance(); 

provider.registerParserManager(
     "org.eclipse.datatools.sqltools.parsers.sql.query.db2", 
     "DB2 UDB", null, null); 

SQLQueryParserManager parserManager = SQLQueryParserManagerProvider 
     .getInstance().getParserManager("DB2 UDB", null); 

能否请你指出如何让解析DB2足够的解析器?

编辑:可能是正确的问题是,我如何确保db2特定提供程序正确注册?什么是正确的类名?

+0

你怎么知道有一个DB2兼容的解析器?对于大多数语言解析器来说,一个真正的问题是它们实际上是一种非常具体的语言方言,然而由不同供应商生产的许多方言(例如,SQL2011 [标准],PL/SQL 8/9/10/11,MySQL,TSQL,DB2,它们都不同)。如果有人没有专门针对DB2方言(“我无法找到类.... db2。*”),那么它们可能根本就不存在。 – 2013-04-04 14:12:43

+0

嗯,它[在文档中](http://www.eclipse.org/datatools/project_sqldevtools/sqltools_doc/SQL%20Query%20Parser%20User%20documentation.htm),并且IBM Data Studio据说使用它。 – 2013-04-04 14:23:35

+0

仍然看着这个 - 文档显示的最接近的层次是'org.eclipse.datatools.enablement.ibm.db2',但仍然没有运气 – 2013-04-08 19:26:16

回答

1

签出名为SQLWorkBench/J sources的项目。他们具有特定于数据库的SQL解析功能。

+0

看起来像一个不错的项目。它显示了一些提示他们的解析器功能非常强大的特性(他们的'src/sql'目录看起来很有前途。)唉,我的电脑中没有db2驱动程序,它需要一个配置文件,而db2不在列表中。我会继续调查,思考。 – 2013-04-04 15:06:03