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?
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. –
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. –
Ancora guardando a questo - la gerarchia più vicina a ciò che la documentazione mostra è 'org.eclipse.datatools.enablement.ibm.db2' ma ancora senza fortuna –