Я хочу проанализировать сложный SQL, который имеет (внутреннее соединение, внешнее объединение) и получает имена таблиц, используемые в SQL.Python-Parsing SQL using pyparsing
Я могу получить имена таблиц, если это простой выбор, но если у SQL есть внутреннее соединение, левое соединение, как показано ниже, тогда результат дает только первую таблицу.
select * from xyz inner join dhf on df = hfj where z > 100
Я использую программу, аналогичную той, что присутствует в приведенной ниже ссылке Павла.
http://pyparsing.wikispaces.com/file/view/select_parser.py/158651233/select_parser.py
Может кто-нибудь сказать мне, как получить все таблицы, используемые в SQL, как показано ниже
select * from xyz inner join dhf on df = hfj where z > 100.
Это может быть дубликат http://stackoverflow.com/q/35295458/409172 Это решение требует наличия живой базы данных и PL/SQL, хранящихся чтобы выполнить большую часть работы, я не уверен, что это возможно для вас. Но это, вероятно, единственный способ правильно разобрать * complex * SQL. Даже нетривиальный Oracle SQL почти невозможно разобрать. С 2175 ключевыми словами, большинство из них не зарезервировано, синтаксический анализ Oracle SQL - огромная задача. Вот почему вам нужен ярлык, например, использование метода «EXPLAIN PLAN» в этом ответе. –