SSブログ

SQL文の整形 [DB]

SQL文は、他人が作った物、自分が作った物に関わらず、何度も見直したりチューニングなどを行います。
しかも、個別のSQLファイルだったり、プログラムに埋め込んでいたり、アプリケーションが自動生成したりと様々な形態で存在し、確認する時は、見やすく整形する必要があります。
そんな時に、便利なツールを紹介します。
ACCESSでのクエリで自動生成したSQLを使って試してみます。

ACCESSのクエリで作成したSQL文
SELECT USER.LOGIN_CD, USER.USER_NAME, ORGANIZATION.ORGANIZATION_NAME
FROM ORGANIZATION INNER JOIN ([USER] INNER JOIN [POSITION] ON USER.USER_ID = POSITION.USER_ID) ON ORGANIZATI
ON.ORGANIZATION_ID = POSITION.ORGANIZATION_ID;
SQL文を作る事に意義があるのでしょうね。GUIのツールもありますし、SQL文としての見せ方は、全く持って無頓着です。

オレオレ - 自分で整形
SELECT USER.LOGIN_CD
     , USER.USER_NAME
     , ORGANIZATION.ORGANIZATION_NAME
FROM ORGANIZATION
INNER JOIN ([USER]
             INNER JOIN [POSITION]
             ON USER.USER_ID = POSITION.USER_ID
           )
ON ORGANIZATION.ORGANIZATION_ID = POSITION.ORGANIZATION_ID;
その昔は、自動的に整形する様なツールなんてありませんでした。
自分でいちいち整形してから、調査やチューニングを始めます。

つみきソフトウェアさんの、CSEによる「SQL崩し」
SELECT
    USER.LOGIN_CD ,
    USER.USER_NAME ,
    ORGANIZATION.ORGANIZATION_NAME
FROM
    ORGANIZATION INNER JOIN ( 	[USER] 	INNER JOIN [POSITION] 	ON USER.USER_ID = POSITION.USER_ID ) ON ORGA
NIZATION.ORGANIZATION_ID = POSITION.ORGANIZATION_ID;
会社の同僚に紹介をして頂いたCSEは、今でもお世話になっています。SQL文の整形は、それなりに努力が伺えますが、ちょっと見づらい。
全くのベタで書かれたSQL文を「SQL崩し」を行ってから、「SQL崩し、崩し!」と、言いながら自分で整形します。

プラムシックスさんの、SqlFmtを秀丸マクロで起動
SELECT USER.LOGIN_CD
, USER.USER_NAME
, ORGANIZATION.ORGANIZATION_NAME
FROM ORGANIZATION
INNER JOIN (
	[USER]
	INNER JOIN [POSITION]
	ON USER.USER_ID = POSITION.USER_ID
)
ON ORGANIZATION.ORGANIZATION_ID = POSITION.ORGANIZATION_ID;
SQL文の整形ツールを探していて、偶然見つけた整形ツールです。フリーでしかも細かな設定ができるのが魅力です。エディタや他のアプリケーションへのインタフェースも公開され、非常に太っ腹です。
秀丸から直接呼び出せる、マクロが添付されているので、細かな設定より手軽さを優先してデフォルトのままで使っています。とはいえ、自分で整形した時とよく似た趣味で整形してくれるので、非常に満足しています。
知らない間に、VectorのOracle用ソフトウェアの人気順トップ2位になっていたのですね。

A.Ogawaさんの、OsqlEditによる「SQL整形」
SELECT USER.LOGIN_CD
    ,USER.USER_NAME
    ,ORGANIZATION.ORGANIZATION_NAME
FROM ORGANIZATION INNER JOIN ([USER] INNER JOIN [POSITION] ON USER.USER_ID =
        POSITION.USER_ID)
ON ORGANIZATION.ORGANIZATION_ID = POSITION.ORGANIZATION_ID;
OsqlEditも、別の方ですが、比較的最近に会社の同僚に紹介して頂きました。
やはり、SQL文を直接実行できるエディタ上でそのまま整形できるのが理想です。そこそこそれなりの整形をしてくれます。

見やすさはSqlFmtです。
作業の前に、いちいち自分で整形する事はしなくても良くなりました。
でも、最終的には、自分で直してしまうので、結局、オレオレ なんです。
人ってわがまま...


nice!(0)  コメント(4)  トラックバック(0) 

nice! 0

コメント 4

rgyxd366

↓こんな感じに整形できます。
SELECT
USER.LOGIN_CD,
USER.USER_NAME,
ORGANIZATION.ORGANIZATION_NAME
FROM
ORGANIZATION
INNER JOIN
([USER] INNER JOIN [POSITION] ON USER.USER_ID = POSITION.USER_ID ) ON
ORGANIZATI ON
.ORGANIZATION_ID = POSITION.ORGANIZATION_ID

by rgyxd366 (2008-06-25 11:04) 

fujie

rgyxd366 さん
コメントありがとうございます。
「SQLConvert」は、ノーマークでした。
只の整形ツールに留まらない所に期待をします。
by fujie (2008-06-25 21:13) 

コマ

sqlendia整形結果:

SELECT
USER.LOGIN_CD
,USER.USER_NAME
,ORGANIZATION.ORGANIZATION_NAME
FROM
ORGANIZATION
INNER JOIN
(
[USER]
INNER JOIN
[POSITION]
ON
USER.USER_ID = POSITION.USER_ID
)
ON
ORGANIZATI
ON.ORGANIZATION_ID = POSITION.ORGANIZATION_ID;
by コマ (2008-07-06 23:10) 

fujie

コマさん
コメントありがとうございます。
「INSERTコメント」すばらしいですね。
素敵すぎます。
by fujie (2008-07-07 23:10) 

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。