Существуют ли SQL-валидаторы, которые могут проверять синтаксис на нескольких серверах баз данных? - PullRequest
18 голосов
/ 13 октября 2011

Существуют ли SQL-валидаторы, которые могут проверять синтаксис для нескольких серверов баз данных?

Например, я мог бы проверить, будет ли определенный запрос работать с Oracle, MySQL и SQL Server.

Меня больше беспокоит синтаксис SQL, чем запрашиваемая фактическая схема, поэтому инструмент, который может отлавливать основные синтаксические ошибки, например обнаруживать, что предложение limit не поддерживается в SQL Server и Oracle, был бы хорошдостаточно.


РЕДАКТИРОВАТЬ:

В нескольких ответах предлагалось проверить синтаксис для конкретной СУБД или для стандарта ANSI.

То, что я ищу, - возможность целенаправленного объединения функций между двумя или более базами данных (скажем, SQL Server и Oracle).Я хотел бы иметь возможность использовать любую функцию SQL, которая поддерживается всеми СУБД, на которые я ориентируюсь, в конкретном приложении.

Я не уверен, стоит ли это того.Я думаю, что это зависит от количества не-ANSI функций, совместно используемых несколькими базами данных.Если их очень мало, то, возможно, будет лучше ориентироваться на стандарт ANSI.

Ответы [ 4 ]

7 голосов
/ 13 октября 2011

Я не знаю ни одного, что является конкретным, они будут проверять правильность утверждений ANSI 92/99/2003 ...

http://developer.mimer.com/validator/index.htm

Это даст вам 99% пути (особенно если вы выполняете только операции CRUD)

возможно, если вы знаете, какие зарезервированные слова используются в какой базе данных, вы можете запустить свою собственную простую проверку. см .: Как узнать, является ли имя столбца зарезервированным ключевым словом в разных базах данных

(как уже упоминалось) Если ваша цель - создать независимую от базы данных систему, подумайте об использовании стороннего инструмента, например: entityspaces

2 голосов
/ 13 октября 2011
2 голосов
/ 13 октября 2011

С точки зрения SQL Server, вместо проверки синтаксиса sql для нескольких серверов баз данных вы можете проверить синтаксис "на соответствие стандарту FIPS 127-2. Это основано на стандарте ISO." .

Пример:

SET FIPS_FLAGGER 'INTERMEDIATE'
0 голосов
/ 11 июля 2013

Это онлайн-проверка синтаксиса mysql, но это только mysql http://www.piliapp.com/mysql-syntax-check/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...