本文へスキップ

SQL整形

SQL Formatter

キーワードの大文字小文字・インデント・カンマの位置を決めて、主要な方言のSQLを整えます。

SQLのクエリを読める形に並べます。キーワードを揃え、句ごとに行を分け、JOINはぶら下がっているテーブルの下にインデントします。方言を5つ知っていますが、方言の違いは大半が文字列・識別子・コメントのクォートのしかたにあり、そこを間違えるとフォーマッタがクエリを壊してしまうからです。

🔒 ブラウザの中だけで動きますsqlformatdatabasebeautify
方言

ANSIの引用: 識別子は二重引用符、文字列の中の引用符は二度書きます。

キーワード
インデント
カンマ
行幅

SQL入力

.sql ファイルを置く

このタブの中で読みます。アップロードはしません。

整形結果

入力

253 byte

出力

0 byte

文の数

0

トークン保持

はい

これはSQLを並べるだけで、検証はしません。 FROM が抜けたクエリもきれいに整形され、データベースにはそのまま拒否されます。

使い方

  1. 方言を先に選びます

    MySQLのバッククォート、PostgreSQLのドルクォート、SQL Serverの角括弧——それぞれ、何が識別子で何が文字列かを変えます。標準はANSIの読み方で、移植性を要するクエリならこちらが正しい選択です。

  2. チームの流儀に合わせます

    キーワードの大文字小文字、インデント幅、カンマを行頭に置くか行末に置くか、selectの並びを折り返す幅です。行頭のカンマは、カラムの一覧にgit blameをかけてみるまでは奇妙に見えます。

  3. 「トークンが保たれている」を確認します

    実行のたびに、出力をトークン化し直して入力と比べます。いいえと出たら、フォーマッタが何かを読み違えています。ほとんどの場合は方言の食い違いです。そのときは出力ではなく、手元の入力を使ってください。

よくある質問

クエリを検証してくれますか

しません。並べるだけです。スキーマを知りませんし、意味を取るためにパースもしません。`FROM`句の抜けたクエリもきれいに整形され、データベースには前とまったく同じように拒否されます。

`--`のコメントが`/* */`に変わったのはなぜですか

圧縮したときだけです。`--`のコメントは行末まで続くので、クエリを1行にまとめるとその後ろが全部コメントになってしまいます。いくつ変換したかを数えて表示するので、黙って起きることはありません。

ここで言う「閉じていない文字列」とは何ですか

閉じないままのクォートです。たいていは方言が合っていないことが原因で、標準モードでのバッククォートや、MySQLモードでの`$$`ブロックといった場合です。その後ろは全部その文字列の一部として読まれるので、出力の残りがめちゃくちゃに見えます。

マイグレーションのファイル全体を貼り付けてもいいですか

構いません。セミコロンで文を分け、その数を表示します。整形はワーカーで走るので、大きなファイルでもページは止まりません。とても長いファイルは少し時間がかかります。

ここから渡せます

次の一手

このツールが出したものをそのまま受け取れる道具です。