У меня есть более 150 SQL-запросов в отдельных текстовых файлах, которые мне нужно проанализировать (только фактический код SQL, а не результаты данных), чтобы идентифицировать все используемые имена столбцов и таблиц. Желательно с количеством появлений каждого столбца и таблицы. Написать новую программу синтаксического анализа SQL сложнее, чем кажется, с вложенными операторами SELECT и т.п.
Должна быть программа или код, который делает это (или что-то похожее на это), но я его не нашел.


Возможно, вы захотите увидеть что-то вроде этого:
который использует JavaCC для анализа и возврата строки запроса в виде графа объекта. Никогда им не пользовался, поэтому за качество поручиться не могу.
Как насчет использования отчета плана выполнения в MS SQLServer? Вы можете сохранить это в xml-файле, который затем можно будет проанализировать.
Если ваше приложение должно это сделать и имеет доступ к базе данных, в которой есть таблицы и т. д., Вы можете запустить что-то вроде:
SELECT TOP 0 * FROM MY_TABLE
Используя ADO.NET. Это даст вам экземпляр DataTable, для которого вы можете запросить столбцы и их атрибуты.
На самом деле я использовал инструмент под названием SQL Pretty Printer. Вы можете приобрести настольную версию, но я просто воспользовался бесплатным онлайн-приложением. Просто скопируйте запрос в текстовое поле, установите для параметра «Вывод» значение «Список объектов БД» и нажмите кнопку «Форматировать SQL».
Он отлично работает, используя около 150 различных (и сложных) SQL-запросов.
Пожалуйста, используйте antlr ... Напишите грамматику n следуйте инструкциям ... которые приведены на сайте antlr ... в конце концов вы получите AST (абстрактное синтаксическое дерево). Для данного запроса ... мы можем пройти через него и вывести всю таблицу, столбец, который присутствует в запросе ..
В DB2 вы можете добавить в свой запрос что-то вроде следующего, но 1 - это минимум, который вы можете указать; он выдаст ошибку, если вы попытаетесь указать 0:
FETCH FIRST 1 ROW ONLY
Сохранил мой * $$ :) Спасибо.