openArchitectureWare で生成しているDDLステートメントをクリーンアップするために使用できるSQL用のJavaオープンソースのビューティファイアまたはリフォーマッターを探しています。
" Online Code Beautifier And Formatter "の答えには何も役に立たず、 Simple SQL Formatter を機能させることができませんでした。
更新2:
org.hibernate.jdbc.util.BasicFormatterImpl
リリース4.0で移動されました。現在は次の場所にあります:org.hibernate.engine.jdbc.internal.BasicFormatterImpl
。
更新1:
テクノロジーは進歩しています。アレックスが指摘したように、org.hibernate.pretty.Formatter
バージョン3.3.2.GA以降は存在しません。置き換えはorg.hibernate.jdbc.util.BasicFormatterImpl
:
String formattedSQL = new BasicFormatterImpl().format(sql);
元の回答:
Hibernateを使用している場合は、次の1つが組み込まれています:org.hibernate.pretty.Formatter
String formattedSQL = new Formatter(sql).format();
Eclipseの一部 Data Tools Platform は SQL Development Tools Project です。
SQLクエリパーサー の使用方法を説明するページでは、 SQLQuerySourceFormat を非常に簡単に使用して、次のオプションを提供しています。
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);
あなたは考えましたか:
これらは、APIバージョンとコマンドラインバージョン(およびオンラインバージョン)の両方を提供します。
しかし、コストについての知識はありません。
おそらく jsqlparser があなたのために働くでしょう。
世の中にはかなりの数の廃止されたプロジェクトがあるので、あなたが思うほど簡単に見つけることはできません。実際、私はそれを見つけることができなかったので、私自身のことをすることになりました(h2パーサーに基づいて-他のすべてが失敗した場合は私に連絡することができます)。結果として、私はそれが美化剤を持っているかどうかわかりませんが、それを上に書くことは十分に簡単なはずです。
文法とJavaCCに基づいているので、いずれにしてもこのホイールをantlrで再発明するよりもおそらく良いオプションです。複雑なステートメントでSQLのさまざまな方言をサポートする必要がある場合、文法に基づくアプローチでは失敗することがあります。
これは機能しますか- SQL Formatter。
したがって、これは間違いなくあなたが探しているものです: SQLフォーマッタライブラリ Oracle、SQL Server、DB2、MySQL、Teradata、およびPostgreSQLをサポートします。