コンテンツにスキップ
ToolsMinify logo
開発者ツール

SQL フォーマッターとミニファイ

乱れた SQL をレビュー用に整形するか、ログ、環境変数、文字列リテラル向けに1行にミニファイ。この無料 SQL フォーマッターとミニファイはブラウザ内完結のため、実テーブル名を含む本番クエリはアップロードされません。トークナイザは文字列安全: 引用内コメント、PostgreSQL ドルクォート、バッククォート、オプティマイザヒント (/*+ と /*!

SQL フォーマッターとミニファイについて

乱れた SQL をレビュー用に整形するか、ログ、環境変数、文字列リテラル向けに1行にミニファイ。この無料 SQL フォーマッターとミニファイはブラウザ内完結のため、実テーブル名を含む本番クエリはアップロードされません。トークナイザは文字列安全: 引用内コメント、PostgreSQL ドルクォート、バッククォート、オプティマイザヒント (/*+ と /*! */) を保持。ライブ clause map で CTE、JOIN、フィルターを一覧し、ログの1行ダンプを PR 前に読みやすく。JSON ミニファイと同形: 1 URL、整形/ミニファイ、Standard / PostgreSQL / MySQL / SQLite。

SQL フォーマッターとミニファイの使い方

  1. Format SQL(クエリフォーマッター)または Minify SQL を選びます。デフォルトは整形。
  2. クエリを貼るか .sql をドロップ(最大 2 MB、ブラウザ内のみ)、または JOIN / CTE / INSERT / PostgreSQL サンプルを読み込み。
  3. ダイアレクトを選ぶ(または検出結果を受け入れ)、整形ではキーワードケースとインデント、ミニファイではヒント保持を設定。
  4. clause map(CTE、FROM、JOIN、WHERE / GROUP / ORDER / LIMIT)を確認し、コピーまたはダウンロード。アップロードなし。

SQL フォーマッターとミニファイの例

1行ログクエリの整形

JOIN 付き SELECT が1行に潰れている場合、各 SELECT 項目、JOIN、ON、WHERE、ORDER BY が行分けされ、キーワードは大文字化されます。

埋め込み向け SQL ミニファイ

整形済みクエリはコメント除去の1行に。オプティマイザヒント (/*+ INDEX */) と MySQL バージョンコメント (/*!40101 */) はオフにしない限り残ります。

CTE と JOIN の概要

WITH active AS (...) SELECT ... JOIN orders は CTE 本体がインデント付きで整形。clause map に CTE 名、JOIN 種別、GROUP BY が並び、全行を読まず構造を確認できます。

PostgreSQL ドルクォート

SELECT $body$ line -- still a string $body$::text は1リテラルのまま。正規表現ミニファイは -- で切ります。PostgreSQL ダイアレクト(または sniff 結果)で :: キャストと $1 プレースホルダーに対応。

コメントに見える文字列

VALUES (1, 'Ada -- not a comment') はエスケープされた文字列を保持。引用内の -- は SQL コメントとして扱いません。

SQL フォーマッターとミニファイに関するよくある質問

この SQL フォーマッターを使うには?
SQL を貼る(または .sql をドロップ)、Format SQL のまま Standard / PostgreSQL / MySQL / SQLite を選び、インデント結果をコピー。キーワードケースとインデント(2 または 4 スペース)を調整。すべてブラウザ内。
SQL ミニファイにも使える?
はい。同一ページでコメントと余分な空白を1行に畳み、文字列リテラル、ドルクォート、引用識別子は触りません。env、URL パラメータ、ログ、アプリ文字列内 SQL に。
SQL はサーバーにアップロードされる?
いいえ。トークン化、整形、ミニファイはブラウザ内のみ。本番クエリは顧客データの近くにあることが多く、サーバー側フォーマッターは不向きです。
対応 SQL ダイアレクトは?
Standard SQL、PostgreSQL、MySQL、SQLite。引用とコメントが異なります: PostgreSQL ドルクォートと ::、MySQL バッククォート / # / /*! */、SQLite AUTOINCREMENT と [identifiers]。sniffer と不一致なら検出ダイアレクトを使用。
ミニファイで -- や /* */ を含む文字列は壊れる?
いいえ。文字列、ドルクォート、引用識別子を閉じてからコメントを探します。'Ada -- not a comment' と $tag$ -- still a string $tag$ は生存。単純 regex ミニファイは失敗します。
ミニファイでオプティマイザヒントは除去される?
デフォルトではいいえ。/*+ INDEX(...) */ と MySQL /*!40101 ... */ はプランに影響するため残ります。通常の -- と /* */ は除去。Keep optimizer hints のチェックを外すとそれらも除去。
clause map とは?
CTE、SELECT 数、FROM テーブル、JOIN 種別、WHERE / GROUP BY / ORDER BY / LIMIT の有無の構造読み出し。ダンプクエリのレビュー用で、SQL は実行されません。
整形でクエリ意味は変わる?
いいえ。空白、改行、キーワードケース、(ミニファイ時)コメントのみ変更。テーブル名、列名、リテラル、ヒントはそのまま。DB 結果は同じです。
sqlformat.io や aiven との違いは?
それらは汎用整形で止まりがち。本 URL はミニファイも、ヒント保持、ドルクォート安全、ダイアレクト sniff、clause map - JSON/JS ミニファイと並ぶクライアント側。