top / index / prev / next / target / source
日記形式でつづる いがぴょんコラム ウェブページです。
Javaで書かれたフリーなSQL整形ライブラリ「BlancoSqlFormatter」をベータ版リリースします。
Javaで書かれたフリーなSQL整形ライブラリである「BlancoSqlFormatter」について、これをβ版リリースさせていただきます。blanco Framework のSQL整形ライブラリである blancoSqlFormatterとして提供する形態を取ります。(2006.05.10追記 当初は blancoCommonsに同梱して提供されていました)古くからの知人である渡辺義則 (a-san)さんにお願い (おねだり) してベースラインを作っていただきました。渡辺義則さま、お忙しいところ、大変ありがとうございます。これだけのものを ちょいっと作ってしまう渡辺さんには、いつも感動させられてばかりです。(少なくともいがぴょんには作ることは出来ません)ちなみに、渡辺義則さんは多くの(そしてそれらのいくつかは重要な) オープンソース・ソフトウェアを開発された方でもあります。
BlancoSqlFormatterライブラリの基本方針
このライブラリは SQL整形を行うことのみを目的としています。ライブラリとしての形態のみにてリリースしていく予定です。このライブラリを組み込んで SQL整形を行いたいという開発者向けにリリースすることが主たる目的です。フリーなSQLエディタ/SQL整形 Eclipseプラグインへの組み込みなどを行なわれる方が現れることを遠い目をしながら期待しています (笑)
取得方法
ライブラリモジュールおよびソースコードは、下記からダウンロードすることができます。
実行方法
下記のような感じで利用します。 Test.java
import blanco.commons.sql.format.BlancoSqlFormatter;
import blanco.commons.sql.format.BlancoSqlRule;
public class Test {
public static void main(String[] args) {
BlancoSqlFormatter formatter = new BlancoSqlFormatter(
new BlancoSqlRule());
System.out.println(formatter
.format("SELECT DISTINCT a, b, c FROM table t1 ORDER BY b"));
}
}
※基本的に、上記サンプルで利用されているAPIについては、インタフェースは変更しない方針です。 リリースのフィードバック
まずは ANSI-SQL 99 を大まかにサポートすることを目標としています。 固有のRDBMSのサポートは後回しに考えていますが、でもサポートできるに越したことはないと考えています。
SQL文の試験データのバリエーションは まだまだ不足しています。 うまく整形できないSQL文がありましたら、入力SQL文(をデフォルメしたもの)・希望の整形後SQL文・期待とずれている箇所を明記のうえ、いがぴょんまでメールにて お知らせください。実装上の都合・技術的な都合・美意識などでご期待に沿うことができない場合もあるかも知れませんが、ご指摘の内容に適切に対応できる場合もあります。
既知の問題:MAX()などの式については、字下げが () カッコをベースとしたものになっているため、多少の不具合があることがすでにわかっています。しかし 実装上の都合や 他のバランスとの兼ね合いもあり、現時点では、あえて () カッコ の字下げルールを基調としています。
関連する日記