Вопрос-ответ

SQL parser library for Java [closed]

Библиотека синтаксического анализа SQL для Java

Существует ли библиотека Java с открытым исходным кодом для синтаксического анализа инструкций SQL?

По возможности, она должна быть настраиваемой или достаточно гибкой, чтобы также иметь возможность анализировать (или, по крайней мере, игнорировать) синтаксис, зависящий от конкретного поставщика (например, определения табличного пространства Oracle или предложение LIMIT в MySQL).

Если нет, то строгое соблюдение стандарта SQL также подойдет.

Обновление: мне это нужно для двух вещей:


  • предоставление интерфейса SQL для базы данных, отличной от SQL (сопоставление с внутренними вызовами API)

  • переписывание SQL перед отправкой в реальную базу данных (например, Oracle)

Переведено автоматически
Ответ 1

ВANTLR3 доступна грамматика ANSI SQL. Вы можете использовать ее для создания собственного синтаксического анализа.

В ANTLR4 есть грамматика SQL.

Ответ 2

  • JSqlParser

  • Анализатор Trino написан с использованием ANTLR4 и имеет свои собственные неизменяемые классы AST, созданные на основе синтаксического анализа. У AST есть посетитель и симпатичный принтер.

Ответ 3

Анализатор

Если вам нужен синтаксический анализ, он должен быть в базе кода Apache Derby.

Работа с SQL, зависящим от поставщика

Возможно, вы захотите взглянуть на метод .native() объекта jdbc Connection, с помощью которого вы можете передавать ему запросы, не зависящие от поставщика, которые будут постобработаны в запросы, специфичные для конкретного поставщика.

Ответ 4

Общий синтаксический анализ SQL для Java не имеет открытого исходного кода, но это именно то, что вам нужно.

java sql