Парсер SQL Query для Java
Я ищу парсер запросов SQL для запросов MySQL. С помощью которого я могу проанализировать запрос, изменить объект запроса и распечатать измененный запрос
JSQL Parser был именно тем, что мне было нужно, но у него есть две основные проблемы, при которых исключается одинарная кавычка внутри значений столбца https://github.com/JSQLParser/JSqlParser/issues/167 https://github.com/JSQLParser/JSqlParser/issues/166
Поэтому я ищу альтернативу с открытым исходным кодом, которая может помочь мне с задачей
Престо-парсер, который я пробовал, не смог разобрать запросы на обновление
Если кто-то еще знает о какой-либо другой надежной библиотеке синтаксического анализа SQL, пожалуйста, дайте мне знать
2 ответа
Что касается JSqlParser:
Проблема 166 уже исправлена.
Экранирование одинарных кавычек не поддерживается, но использование двойных одинарных кавычек -. Поэтому кто-то может заменить все " использование " перед анализом.
РЕДАКТИРОВАТЬ: Исправлена ошибка167 в фактическом снимке 0.9.5 JSqlParser.
Год назад я искал то же самое, но, наконец, я использую другой подход. Это были проекты, которые я нашел для разбора sql.
АНТЛР. Обычно используется универсальный парсер. Это своего рода генератор парсеров. Из набора правил он пишет код Java. Есть правила для многих вещей, таких как испанский, Java или SQL.
JParsec. Похоже на предыдущий. Кажется, что уже существуют правила SQL, но, похоже, их нелегко использовать.
ZQL. Использует JavaCC для автоматической генерации кода Java, который анализирует SQL. Я проверяю это, но я не могу заставить его работать так, как я хочу. И я думаю, что проект прекращен.
sql-parser. Это выглядит красиво, но когда я проверил это, я не могу заставить его работать. Ссылка, похоже, не работает, но я думаю, что это форк оригинального проекта.