Я пытаюсь извлечь имена таблиц из SQL-запроса и сталкиваюсь с некоторыми трудностями при использовании синтаксических анализаторов Python SQL, таких как sqlparse.Проблема заключается в псевдонимах - парсер будет путать реальное имя таблицы с его псевдонимом и будет возвращать только псевдоним.
Моя цель - не редактировать синтаксический анализатор, а вместо этого заранее очистить псевдонимы из SQL-запроса, используя регулярные выражения, чтобы синтаксический анализатор мог выполнять свою работу.
Мне также не нужно переименовывать все вызовы псевдонимов в запросе в исходное имя, поскольку контекст этого анализа требует только имена таблиц и ничего больше.
Чтобы сделать это явным, с помощью этого запроса (в виде строки):
SELECT * FROM schema.table alias
Регулярное выражение вернет: "SELECT * FROM schema.table" - которое затем будет отправлено для дальнейшегообработка, чтобы получить имя таблицы.Если псевдоним отсутствует, например:
SELECT * FROM schema2.table2
Тогда строка вернет строку без изменений.
Как мне это сделать?Существуют ли другие синтаксические анализаторы Python, которые могли бы справиться с псевдонимами?