Здравствуйте, paucity, Вы писали:
P>Есть в природе какой-нибудь тул для подобных задач?
Сам не пользовался и не особо заморачивался, но наткнулся вот тут на такую штуку https://www.gudusoft.com/. По описанию выходит, что они анализируют скрипты (или хранимки) и строят граф, который показывает какие данные куда передаются в рамках скрипта.
Там всё, конечно заточено на визуализацию, но (!) якобы можно просто выдернуть (то ли через API, то ли прямо в интерфейсе, просто список таблиц и полей, которые в принципе тут задействованы).
Единственно это платное, но чисто попробовать можно и во Free режиме.
Здравствуйте, Михаил Романов, Вы писали:
МР>Если будет возможность, потом поделитесь, как решили задачу (ну и на сколько подходящий сервис из сообщения выше).
Работает в общем как описано и показано у них на картинках.
Единственное, пришлось включить в настройках опцию: indirect dataflow. Без этого не выводил в отчет некоторые таблицы, присутствующие в навороченых select/join запросах.
Так же инструмент выводит error log, если в SQL коде находит поля без явного указания к какой таблице они принадлежат.
В общем, я протестировал тул на десяти запросах, которые я до этого распарсил вручную, почти в каждом нашлось 1-2 поля которые я пропустил
Здравствуйте, paucity, Вы писали:
P>Есть куча достаточно навороченных файлов с SQL кодом. P>Задача "распарсить" эти файлы на список таблиц и полей, используемых в коде.
Решал такую же проблему, написал собственный парсер. Это задача на пару дней, если знакомы с рекурсивными нисходящими парсерами.
Здравствуйте, paucity, Вы писали:
P>Есть куча достаточно навороченных файлов с SQL кодом. P>Задача "распарсить" эти файлы на список таблиц и полей, используемых в коде.
Я полагаю, что в общем случае задача решается не полностью.
Могут присутствовать хранимые процедуры, содержащие динамическое построение команд, принимающие имена некоторых таблиц и столбцов как параметры, вызываемые из клиентских контекстов (то есть только из SQL-файлов не будет возможности почерпнуть эту информацию).
В целом, парсить текст, который текстом собирает динамическую команду — то ещё багофичное удовольствие.
Как этой штуке можно закинуть файл big.sql с кучей select'ов, join'ов, where и case'ов и получить на выходе файл со списком таблиц и полей используемых в файле big.sql?
Здравствуйте, Михаил Романов, Вы писали:
МР>Сам не пользовался и не особо заморачивался, но наткнулся вот тут на такую штуку https://www.gudusoft.com/. По описанию выходит, что они анализируют скрипты (или хранимки) и строят граф, который показывает какие данные куда передаются в рамках скрипта. МР>Там всё, конечно заточено на визуализацию, но (!) якобы можно просто выдернуть (то ли через API, то ли прямо в интерфейсе, просто список таблиц и полей, которые в принципе тут задействованы).
Здравствуйте, paucity, Вы писали:
P>Спасибо!
Если будет возможность, потом поделитесь, как решили задачу (ну и на сколько подходящий сервис из сообщения выше).