2013-04-04 10 views
5

Recentemente ha scoperto le classi SQL Query Parser nel progetto DTP e sembra un grande (e unico) progetto.Progetto Strumenti di Eclipse Data - SQL Query Parser

Il mio problema è che ho bisogno di analizzare e vedere se riesco a unire alcuni frammenti SQL piuttosto pelosi che vengono utilizzati in un grande sistema. Ho bisogno di un parser intelligente e capace in modo da poter eseguire un'analisi accurata e determinare se posso unire alcuni di questi frammenti insieme per migliorare le prestazioni. Ho già capito l'analisi che devo eseguire; tuttavia, il parser as-is non è in grado di analizzare questi frammenti, poiché utilizzano specifiche funzioni OLAP db2 (over(), partition by, ecc.), quindi è necessario includere i plug-in db2 nel mio codice.

Come è fatto? Non sono stato in grado di trovare le classi (org.eclipse.datatools.sqltools.parsers.sql.query.db2.*) da nessuna parte e non ho idea di come registrarle (sto provando a farlo manualmente, ma ovviamente non riesco a trovare la classe appropriata.)

Questo è quello che sto facendo attualmente, che so che è sbagliato, ma non ho trovato documentazione a riguardo:

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); 

Potete per favore notare come ottenere il parser adeguata per l'analisi di DB2?

Modifica: Probabilmente la domanda giusta è, come posso assicurarmi che il provider specifico per db2 sia registrato correttamente? qual è il giusto nome della classe?

+0

Come si fa a sapere che esiste un parser compatibile con DB2? Un vero problema con la maggior parte dei parser linguistici è che sono in realtà per un dialetto molto specifico di tale lingua, e tuttavia ci sono molti dialetti prodotti dai vari fornitori (ad esempio, SQL2011 [standard], PL/SQL 8/9/10/11, MySQL, TSQL, DB2, tutti diversi). Se qualcuno non ha indirizzato in modo specifico il dialetto DB2 ("Non riesco a trovare le classi .... db2. *"), Potrebbe semplicemente non esistere. –

+0

Bene, è [proprio lì nella documentazione] (http://www.eclipse.org/datatools/project_sqldevtools/sqltools_doc/SQL%20Query%20Parser%20User%20documentation.htm), e IBM Data Studio presumibilmente lo utilizza. –

+0

Ancora guardando a questo - la gerarchia più vicina a ciò che la documentazione mostra è 'org.eclipse.datatools.enablement.ibm.db2' ma ancora senza fortuna –

risposta

1

Verificare il progetto chiamato SQLWorkBench/J sources. Hanno funzionalità di analisi SQL specifiche per DB.

+0

Sembra un bel progetto. Mostra alcune caratteristiche che suggeriscono che il loro parser è abbastanza potente (la loro directory 'src/sql' sembra promettente.) Ahimè, non ho i driver db2 nel mio PC e richiede un profilo, e db2 non era nella lista . Continuerò a indagare, pensai. –