>> 古い記事: Yapra メモ: コマンド+パイプを使った処理との比較、モジュールの書き方など
<< 新しい記事: 「エクスプローラで今開いているフォルダ」をショートカットキー一発でコマンドプロンプトで開く(2010-03)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

サクラエディタ: マクロで選択範囲の SQL文を整形する(要Ruby、anbt-sql-formatter使用)

SQL を整形(SQL崩し)する Rubyスクリプトを マクロ経由でサクラエディタから使うための手順です。

「整形したいSQL文を範囲選択 → マクロ実行」で整形できるようになります。

あらかじめ Rubyインタプリタをインストールしておく必要があります。

追記 20100909:
「気になるけど Ruby のインストールとかやったことないし……」という人向けにちょっとだけコメント → Ruby のインストールは簡単です。 バイナリの zip をダウンロードして解凍して中のディレクトリ bin にパスを通すだけで使えるようになります。 インストーラ付きのものもあります。

まずはここから anbt-sql-formatter をダウンロードし、 解凍して適当な場所に置きます。
以下では、解凍して出てきたフォルダをリネーム+移動して C:\anbt-sql-formatter となるように置き、 この中に bin, lib などがある状態として説明します。
※ setup.rb は使いません。


C:\anbt-sql-formatter\misc フォルダ内にある anbt-sql-formatter-for-sakura-editor.js の以下の箇所を修正します。
バックスラッシュを 2つ重ねる点に注意してください。

// ruby.exe の場所
var envPath = "C:\\ruby\\bin\\ruby.exe";

// サクラエディタのマクロを置いているフォルダ
var macroDir = "C:\\test\\sakuraW_r1714\\";

// anbt-sql-formatter のフォルダ
var asfHome = "C:\\anbt-sql-formatter\\";

修正した anbt-sql-formatter-for-sakura-editor.js をサクラエディタのマクロフォルダに移動します。
マクロフォルダはメニューから 設定>共通設定>「マクロ」タブ で確認・変更できます。


メニューから 設定>共通設定>「マクロ」タブ
マクロを登録したいスロットを選択。
「File:」で anbt-sql-formatter-for-sakura-editor.js を選択し、その右側の「設定」をクリックしてマクロを登録します。


これで準備完了です!
あとは、お好きなキーボードショートカットを割り当てておけば 一発で整形できるようになります。

関連記事

参考(外部リンク)

>> 古い記事: Yapra メモ: コマンド+パイプを使った処理との比較、モジュールの書き方など
<< 新しい記事: 「エクスプローラで今開いているフォルダ」をショートカットキー一発でコマンドプロンプトで開く(2010-03)
** ホームに戻る

コメント

  1. 通りすがり #- |
  2. 2012/06/17(日) 05:50:41 |
  3. URL
  4. [ 編集]
有用なソフト、ありがとうございます。検索でたどりついて、さっそく使わせて(1.8.7 P-358 mingw32)頂いたところ、
parser.rb:188:in `next_sql_token': undefined method `length' for nil
になりました。
# @pos += num.length

if num.nil? then
num = ""
else
@pos += num.length
end
としたら整形してくれました。ruby は不案内なので適切かわかりません。恐縮ですがご確認頂けるとありがたいです。
  1. sonota #X9FshhZ2 |
  2. 2012/06/17(日) 23:17:59 |
  3. URL
  4. [ 編集]
ご連絡どうもありがとうございます。

手元で試したところ、
select -a from b;
のように「マイナス+数以外の文字」というパターンの場合に同じエラーが出るようですね。
このパターンであれば、次のように修正するのが良いかもしれません。

# 修正前
if @char == "-"
/^(d+(.d+(e-?d+)?)?)/ =~ @before[@pos..-1] # float or scientific

# 修正後
if @char == "-" &&
/^(d+(.d+(e-?d+)?)?)/ =~ @before[@pos..-1] # float or scientific

応急処置的ですが……。

「マイナス+数以外の文字」のパターンではない場合は、
差し支えなければエラーになるSQL文がどのようなものか教えていただけますと助かります。
  1. 通りすがり #- |
  2. 2012/06/20(水) 11:20:12 |
  3. URL
  4. [ 編集]
さっそくのご確認ありがとうございます。
整形できました。

ご指摘の通り
マイナス FLOOR(...
とかのパターンでした。

ありがたく使わせていただきます。

コメントの投稿

管理者にだけ表示を許可する

|
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。