Подтвердить что ты не робот

Поиск встраиваемого конструктора SQL или форматирования

Я ищу Java-разработчик с открытым исходным кодом или reformatter для SQL, который я могу использовать для очистки операторов DDL, которые я генерирую с помощью openArchitectureWare.

Ничто в ответе на " "Кодификатор и форматирование кода" для меня не подходит, и я не смог получить Простой SQL Formatter для работы для меня.

4b9b3361

Ответ 1

ОБНОВЛЕНИЕ 2:

org.hibernate.jdbc.util.BasicFormatterImpl был перемещен в выпуске 4.0. Теперь он находится по адресу: org.hibernate.engine.jdbc.internal.BasicFormatterImpl.

ОБНОВЛЕНИЕ 1:

Технология идет дальше. Как отметил Алекс, org.hibernate.pretty.Formatter больше не существует, org.hibernate.pretty.Formatter с версии 3.3.2.GA. Замена - org.hibernate.jdbc.util.BasicFormatterImpl:

String formattedSQL = new BasicFormatterImpl().format(sql);

ОРИГИНАЛЬНЫЙ ОТВЕТ:

Если вы используете Hibernate, у них есть один встроенный: org.hibernate.pretty.Formatter

String formattedSQL = new Formatter(sql).format();

Ответ 2

Часть eclipse платформа инструментов данных - это Проект средств разработки SQL.

На странице, описывающей использование SQL Query Parser, крайне мало используется SQLQuerySourceFormat, который предоставляет следующие параметры:

  • preserveSourceFormat = возможность сохранения формирования исходного источника при генерации исходного текста SQL
  • statementTerminator = символ, разделяющий несколько операторов SQL
  • hostVariablePrefix = символ, предшествующий переменной языка хоста
  • parameterMarker = символ, который идентифицирует параметр языка хоста
  • delimitedIdentifierQuote * = символ, который содержит идентификаторы с разделителями, чья запись в случае будет сохранена.
  • omitSchema = текущая схема (опущена в источнике SQL, неявная для ссылок на неквалифицированные таблицы)
  • qualifyIdentifiers = флаг, описывающий, как будут идентифицированы идентификаторы в источнике SQL
  • preserveComments = возможность сохранения комментариев в анализируемом источнике SQL или/и сгенерированном источнике SQL
  • generateCommentsForStatementOnly = возможность генерировать комментарии для источника SQL только в контексте полного оператора или если установлено значение false, для одиночных объектов SQL Query вне контекста инструкции также

Ответ 3

С Hibernate v3.3.2.GA, org.hibernate.pretty.Formatter больше не существует. Вы можете использовать его замену: org.hibernate.jdbc.util.BasicFormatterImpl

Formatter f = new BasicFormatterImpl();
String formatted_sql_code = f.format(ugly_sql_code);

Ответ 4

Вы считали:

http://www.sqlinform.com

Они предоставляют как версию API, так и версию командной строки (а также онлайн-версию).

Не знаю никаких затрат.

Ответ 5

Вы можете просто использовать грамматику SQL и построить AST с antlr. Затем вы можете вывести дерево в любом формате, который вам нравится.

Ответ 6

Возможно, jsqlparser будет работать для вас.

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

Он основан на грамматике и JavaCC, поэтому, вероятно, лучший вариант, чем повторное использование этого колеса с antlr в любом случае. Вы можете найти, если вам нужно поддерживать различные диалекты sql в сложных заявлениях, что любой подход, основанный на грамматике, не даст вам возможности.

Ответ 7

Будет ли это работать - SQL Formatter.