SQL整形
SQL Formatter
キーワードの大文字小文字・インデント・カンマの位置を決めて、主要な方言のSQLを整えます。
SQLのクエリを読める形に並べます。キーワードを揃え、句ごとに行を分け、JOINはぶら下がっているテーブルの下にインデントします。方言を5つ知っていますが、方言の違いは大半が文字列・識別子・コメントのクォートのしかたにあり、そこを間違えるとフォーマッタがクエリを壊してしまうからです。
ANSIの引用: 識別子は二重引用符、文字列の中の引用符は二度書きます。
SQL入力
.sql ファイルを置く
このタブの中で読みます。アップロードはしません。
整形結果
入力
253 byte
出力
0 byte
文の数
0
トークン保持
はい
これはSQLを並べるだけで、検証はしません。 FROM が抜けたクエリもきれいに整形され、データベースにはそのまま拒否されます。
使い方
方言を先に選びます
MySQLのバッククォート、PostgreSQLのドルクォート、SQL Serverの角括弧——それぞれ、何が識別子で何が文字列かを変えます。標準はANSIの読み方で、移植性を要するクエリならこちらが正しい選択です。
チームの流儀に合わせます
キーワードの大文字小文字、インデント幅、カンマを行頭に置くか行末に置くか、selectの並びを折り返す幅です。行頭のカンマは、カラムの一覧にgit blameをかけてみるまでは奇妙に見えます。
「トークンが保たれている」を確認します
実行のたびに、出力をトークン化し直して入力と比べます。いいえと出たら、フォーマッタが何かを読み違えています。ほとんどの場合は方言の食い違いです。そのときは出力ではなく、手元の入力を使ってください。
よくある質問
クエリを検証してくれますか
しません。並べるだけです。スキーマを知りませんし、意味を取るためにパースもしません。`FROM`句の抜けたクエリもきれいに整形され、データベースには前とまったく同じように拒否されます。
`--`のコメントが`/* */`に変わったのはなぜですか
圧縮したときだけです。`--`のコメントは行末まで続くので、クエリを1行にまとめるとその後ろが全部コメントになってしまいます。いくつ変換したかを数えて表示するので、黙って起きることはありません。
ここで言う「閉じていない文字列」とは何ですか
閉じないままのクォートです。たいていは方言が合っていないことが原因で、標準モードでのバッククォートや、MySQLモードでの`$$`ブロックといった場合です。その後ろは全部その文字列の一部として読まれるので、出力の残りがめちゃくちゃに見えます。
マイグレーションのファイル全体を貼り付けてもいいですか
構いません。セミコロンで文を分け、その数を表示します。整形はワーカーで走るので、大きなファイルでもページは止まりません。とても長いファイルは少し時間がかかります。
ここから渡せます
文字列エスケープ
String Escaper
JSON・JavaScript・SQL・シェル・CSV・正規表現の規則に合わせて文字列をエスケープし、元にも戻します。
CSVからSQL生成
CSV to SQL
表から列の型を推測し、選んだ方言のCREATE TABLE文とINSERT文を書き出します。
JSONフォーマッター・検証
JSON Formatter & Validator
JSONを整形・圧縮して検証し、構文エラーがあれば行と列を正確に指し示します。
YAMLフォーマッター・検証
YAML Formatter & Validator
YAMLのインデントを揃えて検証し、パーサを壊すタブやアンカーの誤りに印を付けます。
次の一手
このツールが出したものをそのまま受け取れる道具です。
CSVにSQLで問い合わせ
SQL over CSV
置いたCSVやTSVにブラウザ内でSQLを実行し、SELECT・WHERE・GROUP BY/HAVING・ORDER BY・LIMIT・CASEと2表のJOINまで扱います。
CSVからSQL生成
CSV to SQL
表から列の型を推測し、選んだ方言のCREATE TABLE文とINSERT文を書き出します。
リスト形式の変換
List Formatter
複数行をカンマ区切り・引用符付きのSQL IN句・JSON配列・箇条書きに変え、また元に戻します。
文字列エスケープ
String Escaper
JSON・JavaScript・SQL・シェル・CSV・正規表現の規則に合わせて文字列をエスケープし、元にも戻します。
Base64エンコード・デコード
Base64 Encoder & Decoder
テキストでもファイルでもBase64とBase64URLを符号化・復号し、UTF-8も正しく扱います。
curlをコードに変換
curl to Code
curlのコマンドをfetch・axios・Pythonのrequests・Go・PHP・PowerShellのコードに変換します。