Deutsch
Germany.ruФорумы → Архив Досок→ Программирование

Реляции...​

105  
Murr патриот15.12.17 18:07
Murr
15.12.17 18:07 

Реляции...


Как-то писал об том в каком виде у меня производственные базы - в базах нет реляций.

И что было бы хорошо как-нибудь вычислить какими они предполагаются.

Ну а днями мне это просто потребовалось - тестовая машинка с СИ наконец-то закрывается файрволом

и надо смотреть какие данные можно/нужно/необходимо тащить на нее для тестирования.

Без реляций - непонятно что выбирать для загрузки, а целую базу машинка не потянет.


В общем за пару дней слепил следующее:

- за исходные данные взял результат поиска по тексту ключевого слова "WHERЕ", как часть SQL-statement

- записи об вхождениях "WHERE" по полученному списку нарезаются на блоки - от -3 строки до +10 от отметки

- внутри блока ищется подходящее "FROM ... WHERE" и режется на определения "таблиц"

- часть после "WHERЕ" проверяется на наличие "реляции" - Таблица1.Поле1=Таблица2.Поле2

- переподставляются синонимы, все сортируется, дистинктится и дампится списком


Много чего не делается:

- не устанавливается конкретный тип реляции left-, right- join.

- не парсятся джойны если они есть (ну надо писать еще один распознаватель)


В остальном - приемлемо - ошибок много - прихватил местами лишнего и кое-что пропустиl, но из того что есть... а результат экстрагирован с двух дисков общим объемом 750 Гб... нетрудно выделить нужную мне часть - там сего 20 Кб и каждая связка в отдельной строке.


Кому будет надо - стучитесь.

Предупреждаю сразу - код - очень грязный, сделан наживую только-только чтобы решить задачу и поддерживать его Я не планирую.


#1