我解決了這個使用appspot提供的sqlformat web服務。我可以使用上面的Sql Beautify方法編寫自己的Web服務,但我不想在代碼庫中引入新的語言(我們只使用ruby,python和javascript)。
# Hits the following web-service
# http://sqlformat.appspot.com/format/
# Github page
# https://github.com/andialbrecht/sqlparse/
# Documentation
# http://sqlformat.appspot.com/api/
# data - The SQL statement to format.
# remove_comments - Set to 1 to remove comments.
# keyword_case - How to convert keywords. Allowed values are 'lower', 'upper', 'capitalize'.
# identifier_case - How to convert identifiers. Allowed values are 'lower', 'upper', 'capitalize'.
# - while this is an option I found it capitalizes table names which breaks the query. BE CAREFUL
# n_indents - An integer indicating the indendation depth.
# right_margin - An integer indicating the maximum line length.
# output_format - Transfer the statement into another programming language. Allowed values are 'python', 'php'
# {
# :data => query,
# :format => 'text',
# :remove_comments => 1,
# :keyword_case => 'upper',
# :n_indents => 2,
# }
# or, just pass in a the query as a string and the above params will be the default
def DB::format_sql(params)
if(params.class == String)
params = {
:data => params,
:format => 'text',
:remove_comments => 1,
:keyword_case => 'upper',
:n_indents => 2,
}
end
res = Net::HTTP.post_form(URI.parse('http://sqlformat.appspot.com/format/'), params)
return res.body
end