SQL文の整形 [DB]
SQL文は、他人が作った物、自分が作った物に関わらず、何度も見直したりチューニングなどを行います。
しかも、個別のSQLファイルだったり、プログラムに埋め込んでいたり、アプリケーションが自動生成したりと様々な形態で存在し、確認する時は、見やすく整形する必要があります。
そんな時に、便利なツールを紹介します。
ACCESSでのクエリで自動生成したSQLを使って試してみます。
ACCESSのクエリで作成したSQL文
SQL文を作る事に意義があるのでしょうね。GUIのツールもありますし、SQL文としての見せ方は、全く持って無頓着です。
オレオレ - 自分で整形
その昔は、自動的に整形する様なツールなんてありませんでした。
自分でいちいち整形してから、調査やチューニングを始めます。
つみきソフトウェアさんの、CSEによる「SQL崩し」
会社の同僚に紹介をして頂いたCSEは、今でもお世話になっています。SQL文の整形は、それなりに努力が伺えますが、ちょっと見づらい。
全くのベタで書かれたSQL文を「SQL崩し」を行ってから、「SQL崩し、崩し!」と、言いながら自分で整形します。
プラムシックスさんの、SqlFmtを秀丸マクロで起動
SQL文の整形ツールを探していて、偶然見つけた整形ツールです。フリーでしかも細かな設定ができるのが魅力です。エディタや他のアプリケーションへのインタフェースも公開され、非常に太っ腹です。
秀丸から直接呼び出せる、マクロが添付されているので、細かな設定より手軽さを優先してデフォルトのままで使っています。とはいえ、自分で整形した時とよく似た趣味で整形してくれるので、非常に満足しています。
知らない間に、VectorのOracle用ソフトウェアの人気順トップ2位になっていたのですね。
A.Ogawaさんの、OsqlEditによる「SQL整形」
OsqlEditも、別の方ですが、比較的最近に会社の同僚に紹介して頂きました。
やはり、SQL文を直接実行できるエディタ上でそのまま整形できるのが理想です。そこそこそれなりの整形をしてくれます。
見やすさはSqlFmtです。
作業の前に、いちいち自分で整形する事はしなくても良くなりました。
でも、最終的には、自分で直してしまうので、結局、オレオレ なんです。
人ってわがまま...
しかも、個別の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;
オレオレ - 自分で整形
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;
全くのベタで書かれた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;
秀丸から直接呼び出せる、マクロが添付されているので、細かな設定より手軽さを優先してデフォルトのままで使っています。とはいえ、自分で整形した時とよく似た趣味で整形してくれるので、非常に満足しています。
知らない間に、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;
やはり、SQL文を直接実行できるエディタ上でそのまま整形できるのが理想です。そこそこそれなりの整形をしてくれます。
見やすさはSqlFmtです。
作業の前に、いちいち自分で整形する事はしなくても良くなりました。
でも、最終的には、自分で直してしまうので、結局、オレオレ なんです。
人ってわがまま...
2008-06-17 23:03
nice!(0)
コメント(4)
トラックバック(0)
↓こんな感じに整形できます。
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)
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)
コマさん
コメントありがとうございます。
「INSERTコメント」すばらしいですね。
素敵すぎます。
by fujie (2008-07-07 23:10)