LinuxでSQLを整形したくってVimのSQLUtilitiesを使ってみた

手元のPCはFedora 15、開発サーバーはCentOS 5.6と、Linux環境で開発をしてるわけですが、CatalystDBIC_TRACE=1してる時に出てくるSQLを、整形する手段がなかなか見つけられなくて困りました。Windowsだとフリーウェアの文化のおかげで、この手のツールは探せば何かしらみつかります*1Linuxでもオープンソースの文化で、SQLの整形なんてすぐ見つかるだろと思ってたら、意外にも全然見つからなかった。そこで、Vimプラグイン*2を教えてもらったので使って見ました。

使い方

:SQLUFormatter

整形したいSQLvimで開くか、空で開いてSQLを張って、上記コマンドで整形出来ます。

Suggested Mappings: 
    vmap <silent>sf        <Plug>SQLU_Formatter<CR> 
    nmap <silent>scl       <Plug>SQLU_CreateColumnList<CR> 
    nmap <silent>scd       <Plug>SQLU_GetColumnDef<CR> 
    nmap <silent>scdt      <Plug>SQLU_GetColumnDataType<CR> 
    nmap <silent>scp       <Plug>SQLU_CreateProcedure<CR>
SQLUtilities - SQL utilities - Formatting, generate - columns lists, procedures for databases : vim online

ドキュメントには、このマッピングを推奨してるらしいけど、.vimrcに書いて見たけど使い方がさっぱり分かりません。vmapってヴィジュアルモードでのマッピングだよね?ヴィジュアルモードでsfって押してみたけど、特に何も起きない・・・。よく分からないので、マッピングは諦めました。

導入

pathogen.vimを使ってるので、SQLUtilities - SQL utilities - Formatting, generate - columns lists, procedures for databases : vim onlineから最新のをダウンロードして~/.vim/bundle/に置くだけでした。解凍して出来たディレクトリを置いて、~/.vim/bundle/sqlutil_400/て感じにしました。

あと、Align - Help folks to align text, eqns, declarations, tables, etc : vim onlineに依存してるらしく、これも入れる必要があります。vimballというものらしく、若干pathogenと相性がよくないっぽい。

$ vi Align.vba.gz
:let g:vimball_home = "/home/myuser/.vim/bundle/Align/"
:source %

vimプラグインの管理をpathogen.vimにした - WebCrawler2
検索したら入れ方はすぐ出てきたので、この3行で入りました。このエントリーはpathogenについても説明されてます。ホームディレクトリを表す~でパス指定したら、なんか書き込めないと出て、入れられなかったので注意。

その他

インデント整形機能
gg=G

Vimにはインデントを揃える機能があります。このコマンドでファイルの先頭から最後まで、整形が出来るんですが、インデントを揃えるだけなので、1行になったSQLには無力でした。

SQLUtilities

SQLUtilitiesは名前のとおりユーティリティなので、整形以外にも機能があるみたいです。でも、整形したかっただけだし、前述のとおりマッピングうまくいかないし、とりあえず整形以外は使ってません。

GitHub - vim-scripts/SQLUtilities: SQL utilities - Formatting, generate - columns lists, procedures for databases

SQLUtilitiesのリポジトリっぽいのがgithubにありました。

環境

Linux Fedora 15
Vim 7.3.138
SQLUtilities 4.00
Align 35/41

*1:http://www.geocities.jp/rgyxd366/ これがシンプルでお気に入りでした

*2:スクリプトって呼ぶの?