Niedawno odkrył klasy SQL Query Parser w projekcie DTP i wygląda na wspaniały (i niepowtarzalny) projekt.Projekt Narzędzia danych Eclipse - Parser zapytań SQL
Mój problem polega na tym, że muszę przeanalizować i zobaczyć, czy mogę połączyć trochę włochatych fragmentów SQL, które są używane w dużym systemie. Potrzebuję inteligentnego i sprawnego analizatora składni, dzięki czemu mogę przeprowadzić dokładną analizę i ustalić, czy mogę połączyć niektóre z tych fragmentów, aby poprawić wydajność. Już wymyśliłem analizę, którą muszę wykonać; jednak analizator składniowy nie jest w stanie przeanalizować tych fragmentów, ponieważ używają specyficznych funkcji db2 OLAP (over()
, partition by
itd.), więc muszę dołączyć wtyczki db2 do mojego kodu.
Jak to zrobić? Nie udało mi się znaleźć klas (org.eclipse.datatools.sqltools.parsers.sql.query.db2.*
) w dowolnym miejscu, a także nie mam pojęcia, jak je zarejestrować (próbuję zrobić to ręcznie, ale oczywiście nie można znaleźć odpowiedniej klasy.)
to, co mam aktualnie robi, co wiem, jest źle, ale nie znalazłem dokumentacji o tym:
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);
Czy należy podkreślić, jak uzyskać odpowiedni parser dla parsowania DB2?
Edycja: Prawdopodobnie właściwym pytaniem jest: w jaki sposób mogę się upewnić, że dany dostawca db2 jest poprawnie zarejestrowany? Jaka jest właściwa nazwa klasy?
Skąd wiadomo, że istnieje parser zgodny z DB2? Prawdziwym problemem większości parserów językowych jest to, że są one w rzeczywistości bardzo specyficznym dialektem takich języków, a jednak istnieje wiele dialektów tworzonych przez różnych dostawców (np. SQL2011 [standard], PL/SQL 8/9/10/11, MySQL, TSQL, DB2, wszystkie z nich różne). Jeśli ktoś nie zaadresował konkretnie dialektu DB2 ("Nie mogę znaleźć klas ... db2. *"), To może po prostu nie istnieć. –
Cóż, jest to [tutaj w dokumentacji] (http://www.eclipse.org/datatools/project_sqldevtools/sqltools_doc/SQL%20Query%20Parser%20User%20documentation.htm), a IBM Data Studio podobno używa tego. –
Nadal patrzę na to - najbliższa hierarchia tego, co pokazuje dokumentacja, to "org.eclipse.datatools.enablement.ibm.db2", ale wciąż nie ma szczęścia. –