SQL フォーマッター
SQL をきちんとインデントして整形、または 1 行に圧縮。ANSI / MySQL / Postgres の方言に対応。
上に入力すると結果が表示されます。
用途
SQL は psql で打った 1 行から、誰も読めない 200 行のアナリティクスクエリまで幅広く存在します。本フォーマッターは SELECT、INSERT、UPDATE、DDL を一貫したインデント、句ごとの改行、キーワードの大文字小文字統一で書き換えます。ミニファイモードはその逆で、コードやスクリプトに埋め込みやすいよう 1 行に圧縮します。すべてブラウザ内で動作し、クエリはページから外に出ません。
使うべきタイミング
- ログ、ORM、チャットメッセージから取り出したクエリを、レビューしやすく diff しやすい形に整えたいとき。
- マイグレーションをコミットする前に、チームの慣習(UPPERCASE キーワード、2 スペース)に揃えたいとき。
- 長くて整形済みのクエリを 1 行に圧縮し、YAML 設定や CLI 引数に収めたいとき。
- 不揃いの括弧、SELECT リスト内のカンマ抜け、ON のない JOIN など、構造上の問題を整形してから目視で発見したいとき。
よくある注意点
- 本フォーマッターは構造的で、意味的ではありません。 SQL として正しいかは判定しません。入力に構文エラーがあれば、出力にも構文エラーが残ります。
- 方言固有のキーワードは異なります。
ILIKE、RETURNING、LATERALは Postgres、STRAIGHT_JOIN、SQL_CALC_FOUND_ROWSは MySQL です。方言を正しく選ばないとキーワードと認識されません。 - 文字列リテラルはそのまま保持されます。 シングルクォートで囲まれた複数行文字列は改行を維持します。
'...'内のテキストはリフローされません。 - コメントは残りますが独立行に切り出されます。 行内に
-- inline commentがあると、整形時に独立行に移動します。 - ミニファイはコメントを削除します。 必要な場合はミニファイしないでください。
- これは linter ではありません。 CI での検証、スタイル強制、方言チェックには
sqlfluffのような本格 SQL パーサを使ってください。