SQL formatter

有時候拿到一些 SQL 很亂,會想要重新整理一下方便閱讀,但是 TextMate 沒有內建 formatter,雖然有找到給 TextMate 用的 formatter bundle,不過已經沒有作用了。打開來看,發現它是連到某個網站去 parse 結果,看來是被擋了。

後來找到一個 open source 的服務 SQLFormat,最棒的是有提供 API 可以呼叫,有提供 Python 的範例,但 TextMate 的 bundle 是用 Ruby 寫的,於是練習了一下:

require 'uri'
require 'net/http'
require 'json'

uri = URI("http://sqlformat.org/api/v1/format")
https = Net::HTTP.new(uri.host, uri.port)
https.use_ssl = false

body = URI.encode_www_form({:sql => "select * from foo", :reindent => 1, :identifier_case => "upper"})

response = https.post(uri.path, body) 
puts JSON.parse(response.body)["result"]

再修改一下,就做成了 TextMate 的 bundle,檔案我放在 github 上。用法很簡單,只要把 SQL 選起來,執行這個 command 即可。

Contents

comments powered by Disqus