Список таблиц в файле SQL - PullRequest
       25

Список таблиц в файле SQL

0 голосов
/ 23 ноября 2018

Как я могу получить все таблицы в файле .sql с большим количеством блоков plsq / anonymous?Идеальным было бы получить его через словари данных, но это невозможно, потому что их нет в базе данных.

Я думал прочитать текст с помощью регулярных выражений: у кого-нибудь есть идея получше?

1 Ответ

0 голосов
/ 23 ноября 2018

Если вы не можете гарантировать, что SQL находится в определенном формате, облегчающем выбор таблиц, вам потребуется лексический анализатор PLSQL / SQL.

Подробнее см. В этом разделе:

Где я могу найти официальную грамматику для языка программирования PL / SQL?

Чтобы проиллюстрировать мою точку зрения, возьмем такой пример:

SELECT a, b
FROM tabA, tabB
WHERE x = y;

будет работать, есливы grep 'FROM[:space:]' | cut -d' ' -f2.

Но, если у вас есть:

SELECT a, b
FROM tabA,
     tabB
WHERE c IN ( SELECT x
             FROM tabC,
                  tabD
.
.

Тогда все становится сложнее, и вам нужен грамматический анализатор типа Lex / Yacc.

UPDATE, INSERTУДАЛИТЬ должно быть довольно простым:

egrep '(UPDATE|INSERT|DELETE)[:space:]' src.sql | cut -d' ' -f2

Должно помочь вам начать.

Но, как только вы получите больше цветочных макетов, вы обнаружите, что оно начинает пропускать вещи.

...