Поиск встраиваемого конструктора SQL или форматирования
Я ищу Java-разработчик с открытым исходным кодом или reformatter для SQL, который я могу использовать для очистки операторов DDL, которые я генерирую с помощью openArchitectureWare.
Ничто в ответе на " "Кодификатор и форматирование кода" для меня не подходит, и я не смог получить Простой SQL Formatter для работы для меня.
Ответы
Ответ 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.
Ответ 8
Итак, это определенно то, что вы ищете: Библиотека форматирования SQL, поддерживающая Oracle, SQL Server, DB2, MySQL, Teradata и PostgreSQL.