我正在寻找一个Java开源美化器或SQL重新格式化程序,我可以用它来清理我用openArchitectureWare生成的DDL语句。
“Online Code Beautifier And Formatter”的答案中没有任何内容对我有用,而且我无法让Simple SQL Formatter为我工作。
答案 0 :(得分:45)
更新2:
org.hibernate.jdbc.util.BasicFormatterImpl
在4.0版本中被移动了。它现在位于:org.hibernate.engine.jdbc.internal.BasicFormatterImpl
。
更新1:
技术进步。正如Alex所述,自版本3.3.2.GA 以来 org.hibernate.pretty.Formatter
已不复存在。替换为org.hibernate.jdbc.util.BasicFormatterImpl
:
String formattedSQL = new BasicFormatterImpl().format(sql);
原始答案:
如果你正在使用Hibernate,他们有一个内置的:org.hibernate.pretty.Formatter
String formattedSQL = new Formatter(sql).format();
答案 1 :(得分:5)
日食Data Tools Platform的一部分是SQL Development Tools Project。
描述如何使用SQL Query Parser的页面非常简短地使用了SQLQuerySourceFormat,它提供了以下选项:
答案 2 :(得分:5)
使用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);
答案 3 :(得分:2)
答案 4 :(得分:1)
您可以使用SQL grammar并使用antlr构建AST。然后,您可以以任何您喜欢的格式输出树。
答案 5 :(得分:1)
也许jsqlparser对您有用。
不像您想象的那样容易找到,因为那里有一些公平的项目。事实上我没有找到它所以最终做了我自己的事情(基于h2解析器 - 如果其他所有方法都失败,你可以联系我)。因此,我不知道它是否有美化,但在上面写一个应该是直截了当。
它基于语法和JavaCC,所以可能比在任何情况下使用antlr重新发明这个轮子更好。您可能会发现是否需要在复杂语句中支持各种sql方言,任何基于语法的方法都会使您失败。
答案 6 :(得分:1)
这会有用 - SQL Formatter.
答案 7 :(得分:0)
所以这绝对是你要找的:A SQL formatter library支持Oracle,SQL Server,DB2,MySQL,Teradata和PostgreSQL。