2013-04-04 13 views
5

DTP projesinde SQL Query Parser sınıflarını yeni keşfettim ve büyük (ve benzersiz) bir projeye benziyor.Eclipse Data Tools Project - SQL Sorgu Ayrıştırıcı

Sorunum, büyük bir sistemde kullanılan bazı oldukça kıllı SQL parçalarını birleştirip birleştiremeyeceğimi incelemek ve incelemem gerektiğidir. Akıllı ve yetenekli bir ayrıştırıcıya ihtiyacım var, bu yüzden doğru bir analiz gerçekleştirebilir ve performansı artırmak için bu parçaların bir kısmına katılıp katılamayacağımı belirleyebilirim. Yapmam gereken analizi zaten anladım; Ancak, ayrıştırıcı, bu parçaları ayrıştırılamıyor, çünkü db2 OLAP işlevlerini özel olarak kullanıyorlar (over(), partition by, vb.). Bu nedenle db2 eklentilerini koduma eklemem gerekiyor.

Bu nasıl yapılır? Sınıfları (org.eclipse.datatools.sqltools.parsers.sql.query.db2.*) hiçbir yerde bulamadık ve bunları nasıl kaydedeceğimize dair bir fikrim de yok (bunu manuel olarak yapmaya çalışıyorum, ancak tabi ki uygun sınıfı bulamıyor.)

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 ayrıştırma için yeterli ayrıştırıcı nasıl işaret misiniz: Bu şu anda yanlış olduğunu biliyorum, hangi yapıyorum, ama bu konuda belgelerine bulamadı nedir?

Düzenleme: Muhtemelen şu soru, nasıl DB2 belirli sağlayıcı doğru kayıtlı olduğundan emin olun edebilir edilir? doğru sınıf adı nedir?

+0

Aslında DB2 uyumlu ayrıştırıcı olduğunu nereden biliyorsunuz? Çoğu dil ayrıştırıcısıyla ilgili gerçek bir sorun, aslında bu tür bir pankartın çok özel bir lehçesi için oldukları ve çeşitli tedarikçiler tarafından üretilen birçok lehçenin (örneğin, SQL2011 [standart], PL/SQL 8/9/10/11, MySQL, TSQL, DB2, hepsi farklı). Birisi özellikle DB2 lehçesini ele almamışsa (".... sınıfları bulamıyorum .... db2. *") O zaman bunlar mevcut olmayabilir. –

+0

Eh, bu [belgelerin doğru orada] (http://www.eclipse.org/datatools/project_sqldevtools/sqltools_doc/SQL%20Query%20Parser%20User%20documentation.htm) ve IBM Data Studio sözde kullanır. –

+0

Hala buna bakıyorum - belgelerin gösterdiği en yakın hiyerarşi org.eclipse.datatools.enablement.ibm.db2' ama hala hayır şansı –

cevap

1

SQLWorkBench/J kaynakları adı verilen projeye göz atın. Onlar db özgü SQL ayrıştırma yetenekleri var.

+0

Güzel bir projeye benziyor. Bu, ayrıştırıcılarının oldukça güçlü olduğunu ima eden bazı özellikleri gösterir ('src/sql' dizini ümit vericidir.) Ne yazık ki PC'imde db2 sürücüleri yok ve bir profil gerektiriyor ve db2 listede yok . Araştırmaya devam edeceğim, düşündüm. –