Sql Parser в C # для проверки синтаксиса операторов Oracle - PullRequest
2 голосов
/ 03 августа 2010

Я хочу разобрать код SQL файла .sql, используя C #.

Я хочу определить синтаксическую проверку файла sql, в частности, вставки, обновления и удаления операторов.

В частности, есть ли свободно доступный парсер, который может анализировать код SQL в C # .NET? лучше бесплатное программное обеспечение, с исходным кодом и простым в использовании.

Я использую Oracle

Ответы [ 3 ]

2 голосов
/ 03 августа 2010

Вы можете попробовать с ANTLR .
На странице грамматики вы найдете несколько грамматик, связанных с Oracle.

Не имеет отношения, есть ли способ просто "Подготовить" оператор без выполнения?Таким образом, вы можете проверить синтаксис Oracle, а затем перехватить возможные ошибки в вашем коде.Это поможет вам избежать дублирования функций, уже присутствующих в Oracle.Не говоря уже о проблеме обработки изменений между разными версиями Oracle.

Редактировать:
Замечание по поводу примеров кода: я кратко использовал ANTLR, и мне было трудно найти примеры кода в Интернете.Основным источником, который я нашел, было примеров со страницы загрузки ANTLR .Теперь я вижу, что Теренс Парр, автор ANTLR, опубликовал новую книгу , и этот сопровождающий исходный код содержит больше примеров ANTLR .

Поскольку у вас нет большого опыта работы с ANTLR, позвольте мне снова предложить вам другой подход, поскольку это довольно сложная область и требует значительных усилий для обучения, чтобы начать работу.По крайней мере, это был мой опыт.

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

miniSqlParser может анализировать и проверять операторы SQL.Это сборка C # и с открытым исходным кодом. SQL Formatter - это веб-приложение для отступа SQL, которое использует эту сборку.Пожалуйста, попробуйте.

0 голосов
/ 24 октября 2011

Общий анализатор SQL может выполнять автономную проверку синтаксиса SQL без подключения к базе данных. Это поддержка Oracle, SQL Server, DB2, MySQL, MS-ACCESS, Teradata и PostGreSQL.

Но это коммерческая библиотека SQL, а не открытый код.

...