Looking for an embeddable SQL beautifier or reformatter
我正在寻找SQL的Java开放源代码美化工具或重新格式化工具,可用于清理使用openArchitectureWare生成的DDL语句。
"在线代码美化工具和格式化程序"的答案对我没有任何帮助,并且我还无法使Simple SQL Formatter对我有用。
更新2:
更新1:
技术在前进。正如Alex所指出的,
1 |
原始答案:
如果您使用的是Hibernate,则它们具有一个内置的:
1 |
在Hibernate v3.3.2.GA中,org.hibernate.pretty.Formatter不再存在。
您可以使用其替换:org.hibernate.jdbc.util.BasicFormatterImpl
将org.hibernate.engine.jdbc.internal.BasicFormatterImpl用于Hibernate 4.0及更高版本。
1 2 |
Eclipse数据工具平台的一部分是SQL开发工具项目。
描述如何使用SQL查询解析器的页面对SQLQuerySourceFormat的使用非常简短,其中提供了以下选项:
- reserveSourceFormat =用于在生成SQL源文本时保留输入源格式的选项
- statementTerminator =分隔多个SQL语句的字符
- hostVariablePrefix =主机语言变量之前的字符
- parameterMarker =标识宿主语言参数的字符
- delimitedIdentifierQuote * =包含定界标识符的字符,以防万一,将保留其写法
- omitSchema =当前模式(在SQL源中省略,隐式表示为不合格的表引用)
- qualifyIdentifiers =描述如何限定SQL源中的标识符的标志
- reserveComments =在已解析的SQL源或/和生成的SQL源中保留注释的选项
- generateCommentsForStatementOnly =仅在完整语句的上下文中为SQL源生成注释的选项;如果设置为false,则也为语句上下文之外的单个SQL Query对象生成注释
你有没有考虑过:
http://www.sqlinform.com
它们提供API版本和命令行版本(以及在线版本)。
虽然不知道成本。
这行得通吗-SQL Formatter。
也许jsqlparser将为您工作。
不像您想的那样容易找到,因为那里有很多已经停工的项目。实际上,我找不到它,所以最终做了我自己的事情(基于h2解析器-如果其他所有方法都失败,则可以与我联系)。结果,我不知道它是否具有美化剂,但是在上面写一个应该足够简单。
它基于语法和JavaCC,因此在任何情况下都可能比使用antlr重新发明这种轮子更好。您可能会发现,如果需要在复杂的语句中支持各种sql方言,那么基于语法的任何方法都将使您失败。
因此,这绝对是您要寻找的:一个支持Oracle,SQL Server,DB2,MySQL,Teradata和PostgreSQL的SQL格式化程序库。
您可以只使用SQL语法并使用antlr构建AST。然后,您可以按任意格式输出树。