Оперативная проверка синтаксиса SQL в соответствии с несколькими базами данных

64

Есть ли сайт в Интернете для проверки синтаксиса, который соответствует нескольким базам данных?

Например: если у меня есть оператор SQL с ключевым словом 'usage', то сайт должен выдать мне ошибку, говоря, что ключевое слово 'usage' зарезервировано в MYSQL?

Теги:
sql-server

6 ответов

21

Вы можете попробовать форматировать, например this

Они всегда будут ограничены, потому что они (и не могут) знать, какие пользовательские функции вы могли бы определить в своей базе данных (или какие встроенные функции у вас есть или не имеют доступа).

Вы также можете посмотреть ANTLR (но это будет автономное решение)

  • 0
    Гэри, это может быть любая пользовательская функция, что я имею в виду в любом месте скрипта SQL, если он находит ключевое слово любого типа базы данных, он должен выдавать ошибку - это то, чего я ожидаю.
  • 2
    @Phani: трудно даже сказать, что является зарезервированным ключевым словом. Вот официальный список зарезервированных ключевых слов Oracle для 11gR2, но тестирование показывает, что некоторые из них действительно не зарезервированы. Например, notfound , arraylen , sqlbuf , rowlabel не должны работать как имя столбца, но они работают. 100% решение почти наверняка невозможно. Вы можете добавить некоторые подробности о том, что вы делаете, и насколько вам нужна точность.
Показать ещё 1 комментарий
7

Вы пробовали http://www.dpriver.com/pp/sqlformat.htm?

  • 0
    Пробовал, но он только определяет проблемы синтаксиса SQL, но не зарезервированные ключевые слова / функции.
5

Я такого никогда не видел, но есть этот инструмент для разработчиков, который включает в себя проверку синтаксиса для сервера oracle, mysql, db2 и sql... http://www.sqlparser.com/index.php

Однако это, по-видимому, просто библиотека. Вам нужно будет создать приложение, чтобы использовать парсер, чтобы делать то, что вы хотите. И Enterprise Edition, который включает в себя все базы данных, обойдется вам в 450 долларов... ouch!

EDIT: И, сказав это, похоже, что кто-то уже мог сделать то, что вы хотите, используя эту библиотеку: http://www.wangz.net/cgi-bin/pp/gsqlparser/sqlpp/sqlformat.tpl

Онлайновый инструмент автоматически не проверяет каждую БД, поэтому вам нужно запускать их вручную. Я также не могу сказать, насколько это хорошо при проверке синтаксиса. Это вам нужно исследовать самостоятельно.

4

Только об этом знаю. Не уверен, насколько это хорошо от MySQL http://developer.mimer.se/validator/

  • 0
    Ссылка основана исключительно на стандарте SQL, независимо от стандартов организации баз данных (MySQL, Oracle и т. Д.), Как правило, используют разные ключевые слова из-за ограничений. Это хорошее начало, но не то, что я ищу. Спасибо за ответ.
3

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

Функции ANSI делают шаги для обеспечения поддержки синтаксиса в базах данных, но зависят от поставщиков, реализующих спецификацию. И на сегодняшний день они не реализуют всю спецификацию ANSI за раз.

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

2

Я готов поспорить с некоторыми из моей репутации, что такой вещи нет.

Частично потому, что, если вас беспокоит кросс-платформенная совместимость с SQL, ваш лучший выбор, в свою очередь, заключается в абстрагировании кода вашей базы данных с некоторым API или ORM, который обрабатывает эти вещи для вас и хорошо поддерживается, так что они будут работать с новыми версиями баз данных, когда они выйдут.

Точный вид API, доступный вам, будет зависеть от вашего языка/платформы программирования. Например, у PHP есть Pear: DB и другие, я лично нашел довольно приятные функции ORM Python, реализованные в структуре Django. Я предполагаю, что некоторые из этих вещей также должны быть доступны и на других платформах.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню