uroboroSQL formatterは、フューチャーアーキテクトが作成するSQLコーディング規約に従い、SQL文を整形するツールです。
SQL文のインデント、改行、大文字・小文字の区分などを即時変換し、可読性・管理性を高めます。
uroboroSQLのために作られたものですが、DBFluteやDOMAといった2Way-SQLをサポートするライブラリをお使いの方でも利用できます。
Python:
import uroborosqlfmt
sql = u"""
select column1 as column1, --column1
column2 as column2 --column2
,long_column_3 as long_column_3 --column3
from foo_table --table
where column1 = 'sample' --column1
and long_column_3 is not null
"""
formatted = uroborosqlfmt.format_sql(sql)
print(formatted)
出力結果:
SELECT
COLUMN1 AS COLUMN1 -- column1
, COLUMN2 AS COLUMN2 -- column2
, LONG_COLUMN_3 AS LONG_COLUMN_3 -- column3
FROM
FOO_TABLE -- table
WHERE
COLUMN1 = 'sample' -- column1
AND LONG_COLUMN_3 IS NOT NULL
uroboroSQL formatterはPython 2.7 および 3(3.5+)上で利用できます。
uroboroSQL formatter is compatible with Python versions 2.7 and 3 (3.5+).
Package Control
のInstall Package
から
uroboroSQL Formatterを検索しInstallを行ってください。
設定方法や、利用方法は下記のgithubリポジトリのREADMEをご覧ください。
Sublime-uroboroSQL-formatter
日本語Readme
releaseからusqlfmt.exe
をダウンロードし任意のフォルダに配置してください。
Note: 開発中の最新版を試したい場合はbinブランチからバイナリを取得してください。
- コマンドプロンプトにて「usqlfmt.exe」があるフォルダまで移動します。
- 下記の実行引数を入力しEnterを押下します。 ※引数とファイルパスは適切に変更してください。
usqlfmt.exe input_path output_path
usage: usqlfmt [-h] [-v] [-m {file,directory}] [-N] [-B]
[-c {uroborosql,doma2,uroboro,doma}]
[-r reserved_words_file_path]
input_path output_path
uroboroSQL formatter API
positional arguments:
input_path 整形したいファイルのファイルパス、または、ディレクトリパスを指定する。
output_path 整形後の成果物を保存するパスを指定する。
optional arguments:
-h, --help ヘルプを表示する.
-v, --version versionを表示する.
-m {file,directory}, --mode {file,directory}
1つのファイルを対象に整形するか(file)、指定ディレクトリ配下の全ファイルを対象に整形するか(directory)を選択する.指定しない場合"file"として処理する
-N, --nochange_case 予約語と識別子を大文字に変換しない.
-B, --escapesequence_u005c
SQLでバックスラッシュによるエスケープシーケンスを使用している.
-c {uroborosql,doma2,uroboro,doma}, --comment_syntax {uroborosql,doma2,uroboro,doma}
コメントのシンタックス形式を選択する.
-r reserved_words_file_path, --reserved_words_file_path reserved_words_file_path
予約語一覧ファイルに存在する予約語のみを大文字変換するオプション.
予約語一覧ファイルのファイルパスを指定する.
なお、予約語のみを大文字にしたい場合は「-N」オプション指定せず、当オプションを指定すること。
(予約語一覧ファイルはユーザーが提供すること.また、予約語一覧は「改行区切り」とすること.)
予約語一覧は「改行区切り」とすること:
SELECT
INSERT
FROM
AS
・・・
・・・
1つのファイルを対象に整形する場合:
usqlfmt.exe -m file C:/Documents/sqlfiles/inputfiles/test.sql C:/Documents/sqlfiles/output/files
ディレクトリを対象に整形する場合(複数ファイル指定):
usqlfmt.exe -m directory C:/Documents/sqlfiles/inputfiles C:/Documents/sqlfiles/output/files
1つのファイルを対象に整形するとともに、予約語のみ大文字に変換する場合:
usqlfmt.exe -m file C:/Documents/sqlfiles/inputfiles/test.sql C:/Documents/sqlfiles/output/files -r C:/Documents/sqlfiles/reserved_words_list.txt
LICENSEをご参照ください。
python-sqlparse library and this code are both on 3-Clause BSD
enum34 library and this code are both on 3-Clause BSD