Поиск встраиваемого SQL beautifier или переформатирования [закрыто]

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

ничего в ответ на "Онлайн-Код Beautifier И Formatter " мне полезно, и я не смог получить простой форматер SQL работать на меня.

8 ответов


обновление 2:

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

обновление 1:

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

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

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

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

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

часть затмения Платформа Инструментов Данных - это SQL Development Tools Project.

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

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

С Hibernate В3.3.2.Г. А., org.зимовать.хорошенький.Formatter больше не существует. Вы можете использовать его замену:org.зимовать.интерфейс jdbc.утиль.BasicFormatterImpl

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

вы подумали:

http://www.sqlinform.com

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

нет знаний о затратах, хотя.


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


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

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

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



Так что это определенно то, что вы ищете:библиотека форматирования SQL которые поддерживают Oracle, SQL Server, DB2, MySQL, Teradata и PostgreSQL.