Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Oracle Новый топик    Ответить
 Поиск таблиц  [new]
нужен гол
Guest
Есть текстовые файлы, в которых присутствуют всевозможные оракловые SQL, DML, DDL.
Это тексты пакетов/триггеров PL/SQL, Тексты SQL запросов, файлы fmb.
Требуется найти все таблицы, которые упоминаются в текстах файлов.

Скорее всего решение в построении регулярного выражения для поиска.
Подскажите, пожалуйста, как составить такое регулярное выражение.
Или подскажите какие ещё есть способы для решения такой задачи.
30 авг 07, 14:33    [4598086]     Ответить | Цитировать Сообщить модератору
 Re: Поиск таблиц  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116199
Тяжелое неблагодарное дело ...

В первом приближении

select referenced_name from dba_dependencies
where name = 'XXX'
and referenced_type = 'TABLE'
30 авг 07, 14:39    [4598164]     Ответить | Цитировать Сообщить модератору
 Re: Поиск таблиц  [new]
Elic
Member

Откуда:
Сообщений: 29980
dmidek
select
типа автор
Есть текстовые файлы. Требуется найти все таблицы, которые упоминаются в текстах файлов.
30 авг 07, 14:42    [4598195]     Ответить | Цитировать Сообщить модератору
 Re: Поиск таблиц  [new]
нужен гол
Guest
dmidek Спасибо! Если решения не найду другого, то пойду через референсы и DepTree.
Но так есть вероятность упустить таблицы с которыми нет операций через хранимые объекты.
Это могут быть справочники, с которыми работают только формы (fmb) и из этих справочников строятся какие-то отчёты. SQL этих запросов хранятся в текстовом файле, который и надо проанализировать.
30 авг 07, 14:47    [4598240]     Ответить | Цитировать Сообщить модератору
 Re: Поиск таблиц  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116199
Elic
dmidek
select
типа автор
Есть текстовые файлы. Требуется найти все таблицы, которые упоминаются в текстах файлов.


Ну да, я же сказал "в первом приближении"

автор
Это тексты пакетов/триггеров PL/SQL


Вырезаем имя объекта из файла и идем в базу.

А если базы нет, то вопроса вообще нет.
Ведь обнаружить разницу между например синонимом, таблицей и представлением
будет затруднительно.
30 авг 07, 14:49    [4598263]     Ответить | Цитировать Сообщить модератору
 Re: Поиск таблиц  [new]
xymbo
Member

Откуда: Донской --> Москва
Сообщений: 2560
С учетом того, что в процедурах, триггерах может быть insert, delete, update, select вырезать тоже надо будет не просто.
30 авг 07, 14:58    [4598328]     Ответить | Цитировать Сообщить модератору
 Re: Поиск таблиц  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116199
xymbo
С учетом того, что в процедурах, триггерах может быть insert, delete, update, select вырезать тоже надо будет не просто.


Нет, я имел в виду имя объекта, для которого осуществляется поиск

CREATE OR REPLACE PACKAGE BODY scott.pkg_emp_work
....
30 авг 07, 15:00    [4598350]     Ответить | Цитировать Сообщить модератору
 Re: Поиск таблиц  [new]
xymbo
Member

Откуда: Донской --> Москва
Сообщений: 2560
А, ну если известно, какой объект надо вырезать, то это 5 минут. :)
Только вот это я тогда не понял
нужен гол
Есть текстовые файлы, в которых присутствуют всевозможные оракловые SQL, DML, DDL.
Это тексты пакетов/триггеров PL/SQL, Тексты SQL запросов, файлы fmb.
Требуется найти все таблицы, которые упоминаются в текстах файлов.

Мне кажется автор не знает названия этих объектов.
30 авг 07, 15:12    [4598458]     Ответить | Цитировать Сообщить модератору
 Re: Поиск таблиц  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116199
xymbo
А, ну если известно, какой объект надо вырезать, то это 5 минут. :)
Только вот это я тогда не понял
нужен гол
Есть текстовые файлы, в которых присутствуют всевозможные оракловые SQL, DML, DDL.
Это тексты пакетов/триггеров PL/SQL, Тексты SQL запросов, файлы fmb.
Требуется найти все таблицы, которые упоминаются в текстах файлов.

Мне кажется автор не знает названия этих объектов.


xymbo, я наверное неточно выразился...
Из файла мы вырезаем имя пакета, в котором мы будем искать таблицы.
А потом уже с этим именем пакета выполняем мой запрос на
dba_dependencies ...
30 авг 07, 15:14    [4598485]     Ответить | Цитировать Сообщить модератору
 Re: Поиск таблиц  [new]
xymbo
Member

Откуда: Донской --> Москва
Сообщений: 2560
Понятно ,спасибо за разъяснения, dmidek!:)
30 авг 07, 15:15    [4598507]     Ответить | Цитировать Сообщить модератору
 Re: Поиск таблиц  [new]
нужен гол
Guest
В общем случае названия объектов не знаю. Да и внутри PL/SQL может быть динамический SQL, объекты которого ни в референсах ни в DepTree не обнаружить.
30 авг 07, 15:17    [4598533]     Ответить | Цитировать Сообщить модератору
 Re: Поиск таблиц  [new]
xymbo
Member

Откуда: Донской --> Москва
Сообщений: 2560
нужен гол
В общем случае названия объектов не знаю. Да и внутри PL/SQL может быть динамический SQL, объекты которого ни в референсах ни в DepTree не обнаружить.

Да уж, нашли Вы себе задачку, скажу прямо. :(
30 авг 07, 15:20    [4598564]     Ответить | Цитировать Сообщить модератору
 Re: Поиск таблиц  [new]
dmidek
Member

Откуда: Киев - Дортмунд
Сообщений: 116199
нужен гол
В общем случае названия объектов не знаю. Да и внутри PL/SQL может быть динамический SQL, объекты которого ни в референсах ни в DepTree не обнаружить.


Естественно !
А имена таблиц в этом динамическом SQL могут читаться из полей таблицы или передаваться
как входные параметры. А еще есть комментарии, которые не нужно рассматривать.
А еще .... :-)

Я ведь не зря написал в первую очередь
тяжелое неблагодарное дело
30 авг 07, 15:21    [4598575]     Ответить | Цитировать Сообщить модератору
 Re: Поиск таблиц  [new]
нужен гол
Guest
Да уж. Текстовый анализ - занятие не из приятных.
Но должен тут быть какой-то очень простой изящный способ.
Oracle же влёт проводит такой анализ. Вот бы его алгоритм подсмотреть.

Все тексты SQL имеют законченный оформленный вид, без подстановок переменных вместо имен объектов.
В принципе почти додумал как делать, но возможное наличие подзапросов во FROM усложняет задачу.
30 авг 07, 15:34    [4598710]     Ответить | Цитировать Сообщить модератору
 Re: Поиск таблиц  [new]
Takurava
Member

Откуда:
Сообщений: 1776
нужен гол
В принципе почти додумал как делать, но возможное наличие подзапросов во FROM усложняет задачу.
Да ну вас... Много ли найдётся в базе объектов, которые называются "select" "insert" "into" "from" "group" ??? Много ли названий полей совпадает с названием таблиц? Я "первое приближение" делал, просто запихав весь интересующий меня текст в БД и сравнивал ВСЕ слова сос словарём БД. Выходило очень даже неплохое приближение...
30 авг 07, 15:52    [4598866]     Ответить | Цитировать Сообщить модератору
 Re: Поиск таблиц  [new]
нужен гол
Guest
Takurava, СПАСИБО ОГРОМНОЕ!
Похоже это то, что мне нужно!!!
30 авг 07, 16:00    [4598938]     Ответить | Цитировать Сообщить модератору
Все форумы / Oracle Ответить