Анализировать / деконструировать SQL с помощью VBA-Access - PullRequest
2 голосов
/ 03 сентября 2010

Кто-нибудь знает способ деконструкции оператора SQL (взять оператор SQL выбора, извлечь столбцы из каждого SELECT, таблицы из каждого FOR и каждого JOIN и критерии фильтрации из каждого WHERE. Затем я могу поместить эти данные в Таблица спецификации для создания «карты» запроса), включая подзапросы, с использованием VBA? У меня есть проект для отображения видов Teradata в Access DB. Я хотел бы иметь автоматизированный метод для этого.

1 Ответ

1 голос
/ 06 сентября 2010

Вы хотите получить доступ к произвольным подструктурам SQL-запроса (в том числе sub SELECTs)?Вам нужен полный синтаксический анализатор для интересующего диалекта SQL.

SQL - довольно большой и сложный язык.Для этого можно вручную написать код анализатора рекурсивного спуска, но это довольно много работы.Скорее всего, вам лучше воспользоваться генератором синтаксического анализатора и SQL BNF для его подачи.

Но тот факт, что вы хотите сделать это в VBA, намекает на то, что вы вряд ли найдете такой генератор синтаксического анализатора.Возможно, вам придется вызвать генератор синтаксического анализатора, закодированный в другом языке (например, C #), если вы хотите иметь разумные шансы сделать это скромными усилиями, и пойти и найти существующий синтаксический анализатор SQL.

...