SQLフォーマッター
SELECT、JOIN、WHERE、INSERT文を読みやすいインデントと改行で整形し、SQLクエリの確認や共有をしやすくします。 インストール不要で、ファイルや入力内容はできるだけ端末内で処理されるため安心して使えます。
使い方
- 整形したいSQLを入力エリアに貼り付けます(1行に詰め込まれたORM生成クエリ、Slackに貼り付けられた崩れたSQLでも可)
- インデント幅を選択します(2スペース or 4スペース)。社内コーディング規約に合わせてください
- 「SQLフォーマット」ボタンをクリックすると、ブラウザ内で即座に整形されます(SQLは外部送信されません)
- 整形結果はSELECT・FROM・JOIN・WHERE・GROUP BYなど主要句が改行され、ネストされたサブクエリやCTEもインデントで視覚化されます
- 「コピー」ボタンで結果をクリップボードへ転写し、レビューチケットや社内Wiki、SQLクライアントツールに貼り付けて使います
- 整形後のSQLをDBeaverやMySQL Workbench、DataGripで`EXPLAIN ANALYZE`にかけ、ボトルネック箇所の特定に活用します
すべての処理はブラウザで行われ、ファイルがサーバーに送信されることはありません。
よくある質問
標準ANSI SQLを基本として、MySQL、PostgreSQL、SQL Server、Oracle、SQLite、Redshift、BigQueryで使われる主要構文に対応しています。`LIMIT 10`、`OFFSET 5`、`RETURNING`、`MERGE`、ウィンドウ関数(`OVER`句)、PostgreSQLの`::cast`構文なども正しく整形されます。ベンダー固有の拡張構文(Oracleの`CONNECT BY`など)はそのまま保持されます。
ありません。本ツールは空白・改行・インデントのみを変更し、トークンの順序や意味は一切変えません。`WHERE 1=1 AND id IN (SELECT ...)` のような実装も論理的に同一のまま整形されます。整形後のSQLをそのままDBにEXPLAINしても、整形前と同じ実行計画になります。
もっとも効果が出る用途のひとつです。Hibernate、Eloquent、Prismaなどが生成する1行に詰め込まれたJOINだらけのクエリも、整形すると意味の塊(SELECT項目、FROM、JOINチェーン、WHERE、GROUP BY)に分かれ、ボトルネックの特定が容易になります。スロークエリログ調査の前処理として定着しやすい使い方です。
問題ありません。`--`シングルラインコメント、`/* ... */`マルチラインコメント、`'日本語文字列'`リテラルはそのままUTF-8で保持されます。社内ドキュメントの日本語コメント付きSQLや、業務ロジックを説明する長文コメントも崩れずに整形されます。
送信されません。すべての整形処理はブラウザ内のJavaScriptで完結します。本番DBの認証情報・テーブル名・顧客データを含むクエリでも安心して貼り付けられます。金融・医療・公的機関のように外部送信が禁止された環境でも利用可能です。
対応しています。`WITH RECURSIVE`や複数CTE、`ROW_NUMBER() OVER (PARTITION BY ... ORDER BY ...)` のようなウィンドウ関数は、適切に改行・インデントされてネストレベルが視覚的に分かるようになります。分析系の長いクエリのレビュー前整形に特に効果的です。
可能です。インデントを2スペース・4スペースから選べます。GitHub PRの差分ハイライトに合わせるなら4スペース、Slackや社内Wikiの折り返しに合わせるなら2スペースが見やすいです。「コピー」ボタンでクリップボードに転写してそのまま貼り付けるだけです。