くまきち

山と旅と家族が大事。
でも激しい物欲が理性と財布のタガを飛ばす
最近は自転車も乗ってる

SQL崩し(整形)ツール

2009-10-22 11:13:19 | SEまわり
 長い SQL をそのままスクリプトに埋め込むと行が非常に長くなる。 また、あとでスクリプトやソースを見たときに、何がどうなっているのか読み取るのに時間がかかるので、ある程度整形した方が良い。

 例えば、次のような SQL を PHP スクリプトに書くときは、

  
select q1.*, u.name from ( select sectionid, sectionname from section where sectionid='hoge' ) as q1 left join users as u on q1.uid=u.id order by u.name;


を、改行を入れるなどして、

  
$sql = "select q1.*, u.name ";
$sql .= "from ( ";
$sql .= "   select sectionid, sectionname ";
$sql .= "     from section ";
$sql .= "     where sectionid='hoge' ) as q1 ";
$sql .= "left join users as u on q1.uid=u.id ";
$sql .= "order by u.name";


としている。


 ただ、こういう作業は結構めんどくさい。 タイプ量も当然増えるし。
 やりたくないけど、最近は数日コードを見ないだけで、それが何をしているのか分からなくなってきてるので、こういう作業や十分に詳しい説明コメントを入れる作業は省けない。

 それでも、なんとか省力化したい。

 Windows のツールには、CSE というのがあり、これに長い SQL を貼り付けて、Ctrl+Q とすると、ぱらっと展開してくれる。

こんな感じ。

  
SELECT
  q1.*,
  u.name
FROM
  (SELECT
    sectionid,
    sectionname
  FROM
    section
  WHERE
    sectionid='hoge'
  ) as q1 left join users as u on q1.uid=u.id
ORDER BY
  u.name


 ちょっと崩しすぎな気はするけど、一発で崩してくれるので助かる。
 CSE の配布元は以下。

   ○つみきWeb
   http://www.hi-ho.ne.jp/tsumiki/


 CSE は便利なんだが、普段作業をしているのは Emacs 上なので、Emacs に SQL 崩しをやってくれる機能があると便利なんだけどなあ。
 さっと検索しただけでは見つけきれなかった。

 どなたか、ご存じならお知らせ頂けるとうれしいです。


最新の画像もっと見る

2 コメント

コメント日が  古い順  |   新しい順
Unknown (バグ)
2010-05-16 02:16:31
CSEはサブクエリの対応が弱いのでだめ。
SQLConvertかSQL MK2を使った方がいいです。
返信する
Re: (くまきち)
2010-05-16 07:12:02
ありがとうございます(^-^)
どちらのツールも知りませんでした。
返信する