Парсер 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. Это выглядит красиво, но когда я проверил это, я не могу заставить его работать. Ссылка, похоже, не работает, но я думаю, что это форк оригинального проекта.

Другие вопросы по тегам