Какие-либо Java-библиотеки, которые проверяют синтаксис SQL?
Я не уверен, что это даже существует или нет, поэтому я решил, что я буду использовать мудрость других.
Мне было интересно, есть ли там какие-либо библиотеки Java, которые можно использовать для проверки синтаксиса SQL-запроса. Я знаю, что существует множество отклонений от общей спецификации SQL, поэтому она, вероятно, будет работать только с чем-то вроде SQL: 2006, но этого было бы достаточно.
Моя цель - использовать это для тестирования модулей без необходимости выполнять выполнение против БД. Я знаю это ограниченного использования, но это все равно будет полезно.
Спасибо!
Ответы
Ответ 1
Я не думаю, что есть такие библиотеки. Синтаксис SQL имеет слишком много производных.
Возможным решением было бы использовать части чистой Java-базы данных с открытым исходным кодом, такие как SmallSQL. В этом проекте вы можете создать экземпляр SQLParser. Необходимые ссылки на соединение можно легко удалить.
Ответ 2
Возможно, вы можете использовать Antlr, он имеет число грамматики SQL и библиотека Java, а также плагины для различных Java IDE.
Или, как рекомендуется, используйте анализатор утилит SQL с открытым исходным кодом, например SQuirreL SQL Client.
Ответ 3
Общий SQL Parser может выполнять автономную проверку синтаксиса SQL, Поддерживаемые базы данных: Oracle, DB2, MySQL, SQL Server, Teradata и PostgreSQL.
Ответ 4
SQL4J - это SQL-парсер, написанный на Java.
http://www.cs.toronto.edu/~jglu/sql4j/index.htm
Ответ 5
Попробуйте парсер JSQL.
В дополнение к проверке вы получаете значимое представление запроса.
Это позволяет, например, принимать только "определенные" команды; манипулировать
запрос, "префикс" и т.д.
Ответ 6
С JOOQ вы никогда не ошибетесь в SQL. Компилятор Java позаботится об этом.
Ответ 7
Вы можете извлечь код анализа из HSQL, который является java и открытым исходным кодом.
Ответ 8
Apache Derby - это база данных SQL с открытым исходным кодом, полностью реализованная на Java и доступная под Apache License, версия 2.0. Ранее он был известен как IBM Cloudscape.
Вы можете попытаться повторно использовать код разбора с org.apache.derby.impl.sql
.