SQL フォーマッター
SQL を貼り付けると、DevKitLab が選択した方言に合わせて再インデントし、句を整列し、キーワード、関数名、データ型の大文字小文字を整え、解析エラーがあれば行と列を表示します。MySQL、PostgreSQL、SQLite、BigQuery、Snowflake、Redshift、Oracle PL/SQL、SQL Server など 20 種の方言に対応し、インデント幅、論理演算子の改行位置、文間の空行、演算子の詰め方、セミコロンの位置を切り替えられます。ORM やログ、コマンドライン向けに一行へ圧縮してコピーすることもできます。すべての処理はブラウザ内で完結し、SQL は外部に送信されません。
概要
この SQL ツールは選択した方言に従ってクエリを再整形し、句のインデント、キーワードの大文字小文字、論理演算子の改行、文間の空行、演算子の間隔、そして一行への圧縮モードを扱います。クエリのデバッグ、SQL レビュー、マイグレーション整理、ORM パラメータの確認に向いています。
- 01
多方言整形
MySQL、MariaDB、TiDB、SingleStore、PostgreSQL、Redshift、SQLite、DuckDB、BigQuery、Snowflake、Oracle PL/SQL、SQL Server (Transact-SQL)、Spark、Trino、Hive、ClickHouse、Couchbase N1QL、IBM Db2、IBM Db2 for i、汎用の標準 SQL の 20 種を内蔵し、それぞれのキーワード集合で整形します。
- 02
キーワード、関数名、データ型の大文字小文字
キーワードとよく使う関数名、データ型について、保持・大文字・小文字を選べます。テーブル名や列名は元の表記のまま残ります。大文字小文字を意味のある情報として扱うデータベースがあるためです。
- 03
インデント幅と文間の空行
2 スペース、4 スペース、タブから選び、複数文の間に挟む空行の数も指定できます。マイグレーション、初期化スクリプト、テストフィクスチャを引き締めたりブロック化したりできます。
- 04
論理演算子の改行位置
AND や OR を次の行の先頭に置くか、前の行の末尾に置くかを選択でき、チームの SQL スタイルに合わせられます。
- 05
演算子の間隔とセミコロンの位置
演算子を詰めると算術演算子や比較演算子の前後の空白がなくなります。セミコロンを単独行に置く設定にすれば、文の区切りが一目でわかります。マイナスの後ろに負の値が続くときだけ空白を 1 つ残します。詰めてしまうとマイナス 2 つがコメントの始まりとして読まれるためです。
- 06
一行コンパクト
圧縮版をコピーすると文が一行にまとまり、ORM 呼び出しやログフィールド、コマンドラインにそのまま貼れます。引用符の中はそのまま保たれ、行コメントはブロックコメントに書き換えられるので、後続の文が飲み込まれることはありません。
- 07
エラー位置の表示
解析に失敗した場合、ステータスバッジに行と列、エラーメッセージが表示されます。バッジをクリックするとその位置へカーソルが移動するので、欠落した括弧や方言が認識しない構文を特定しやすくなります。
- 08
ファイルのアップロードとダウンロード
ローカルの .sql / .txt はエディタにドラッグしても、ファイル読込から選んでも取り込めます。エディタに表示されている内容はそのまま .sql としてダウンロードできるので、マイグレーションツールやバージョン管理と組み合わせやすくなります。
- 09
再読み込みしても残る設定
選んだ方言、大文字小文字、インデント、表示オプションは、エディタの内容と一緒にこのブラウザに保存されます。次に開いたときに設定し直す必要はありません。
- 10
完全ローカル処理
解析、整形、圧縮、ファイル読み込み、ダウンロードはすべてブラウザ内で完結します。クエリ、スキーマ、テーブル名、サンプル値は外部に送信されません。
使い方
一般的な流れは、方言を選ぶ、SQL を貼り付ける、大文字小文字とインデントを調整する、整形版または圧縮版をコピーする、というものです。
- 01
下部で対象の方言(MySQL、PostgreSQL、SQLite、BigQuery など)を選びます。方言はキーワードの認識にだけ影響し、意味は変えません。
- 02
SELECT、JOIN、UPDATE、INSERT、マイグレーション、ORM 生成 SQL をエディタに貼り付けます。ローカルの .sql ファイルをドラッグするか、ファイル読込から選んでも構いません。
- 03
キーワードの大文字小文字、インデント幅、文間の空行、演算子の詰め方、セミコロンの位置を、チームの規約に合わせて調整します。
- 04
チームが行頭の AND / OR を好む場合は論理演算子の改行を前で改行に、そうでなければ後で改行に切り替えます。
- 05
エディタ内の整形結果を確認します。解析に失敗した場合は、下部のバッジに表示される行・列とエラーメッセージを参考に元の SQL を修正します。
- 06
圧縮した結果が必要なら圧縮版をコピー、読みやすさが必要なら整形版をコピー、保存したい場合はダウンロードして .sql ファイルにします。
- 07
さらに調整したいときはエディタ内で直接 SQL を編集します。ステータスバッジはそのまま追従し、整形ボタンか Shift+Alt+F で現在のオプションを適用し直せます。
詳細
これらの機能は、SQL を扱うときによく遭遇する問題、つまりスタイルの不統一、方言ごとのキーワード差異、解析エラーの位置特定、コンパクト版と読みやすい版の使い分け、本番 SQL の安全な取り扱いをカバーします。
- 20 種の方言をそれぞれのキーワード集合で整形します。MySQL や PostgreSQL から BigQuery、Snowflake、Trino、IBM Db2 まで扱えます。
- キーワード、関数名、データ型の大文字小文字を調整でき、テーブル名や列名は元の表記のまま残ります。
- インデント幅は 2 スペース、4 スペース、タブから選べ、文間の空行、演算子の詰め方、セミコロンの位置も指定できます。
- AND や OR の改行位置を前後で切り替え、チーム規約に揃えられます。
- 整形版をコピーして読みやすさを得るか、圧縮版をコピーしてコードやログ、CLI に貼り付けられます。圧縮しても文字列とコメントはそのまま残ります。
- 文間の空行数を調整でき、マイグレーションやシードスクリプトが読みやすくなります。
- .sql ファイルをドラッグまたは読み込むと即座に現在のオプションで整形され、解析失敗時はステータスバッジに位置が表示されます。
- エディタの内容は整形版でも圧縮版でもそのまま .sql ファイルとしてダウンロードでき、バージョン管理やデータベースツールに渡しやすくなります。
- 選んだ方言と整形オプションはこのブラウザに残るので、次に開いたときも同じ設定から始められます。
- すべての処理はブラウザ内で完結し、クエリ、スキーマ、テーブル名、サンプル値は外部に送信されません。
活用シーン
このページは、SQL を読みやすく、統一感のある、レビューしやすい、他システムへ貼り付けやすい形にしたいあらゆる場面で役立ちます。
-
クエリのデバッグ
ORM が出力した一行 SQL やデバッグログのクエリを貼り付け、整形して JOIN、サブクエリ、WHERE 条件を順に確認します。
-
SQL レビュー
プルリクエストの SQL を整え、チームのキーワード大文字小文字、インデント幅、改行スタイルを統一して、レビュアーがロジックに集中できるようにします。
-
マイグレーションとシードスクリプト整理
Flyway、Liquibase、Knex、Prisma、SQLAlchemy Alembic などの DDL と DML を整形し、必要に応じて文間の空行を残します。
-
BI とレポートクエリ
Metabase、Superset、Looker、Redash のレポート SQL を整理し、SELECT、GROUP BY、ORDER BY の階層を一目でわかるようにします。
-
ストアドプロシージャとスクリプト
PL/SQL、T-SQL、PostgreSQL 関数の本体を整形し、リポジトリへのコミットやドキュメントへの掲載に備えます。
-
面接準備と教材作成
SQL の練習問題、解答、スライドを統一スタイルでまとめ、記事、講義資料、README で見栄え良く展示します。
-
AI コパイロット出力の整形
AI が生成した長い SQL を再整形し、インデント、大文字小文字、キーワード位置を安定させてから実際のクエリエディタで検証します。
-
ログから抽出した SQL
アプリケーションやスロークエリログからコピーした一行 SQL を読みやすい形に展開し、インデックス追加や JOIN 見直しの判断材料にします。
関連情報
SQL が返した JSON カラムや、ログから拾ってきた JSON を扱う場合は、まず JSON フォーマッター で構造を整理し、エラー位置や JSON Path をコピーできます。クエリ結果を行と列で扱いたい場合は CSV ツール で CSV / TSV のプレビュー、編集、変換が行えます。SQL がログ接頭辞や定型文に包まれているときは、まず テキスト置換 で外側のテキストを取り除いてからここで整形してください。
SQL 整形に関するいくつかの注意点
整形は可読性を変えるだけで、意味は変えません。方言やチーム間で誤解されやすいポイントをまとめました。
-
整形は意味を変えない
ツールは空白、改行、インデント、キーワードの大文字小文字だけを調整します。テーブル名、識別子、演算子、引数は変わらず、整形前後で挙動は同じはずです。
-
方言はキーワード認識のみに影響
PostgreSQL と MySQL のどちらを選ぶかは、どの語をキーワードと見なすか、引用符や関数名をどう扱うかに影響します。MySQL 構文を PostgreSQL 構文に翻訳することはありません。
-
キーワードの大文字小文字は要件ではなくスタイル
多くのデータベースは SQL キーワードの大文字小文字を区別しませんが、チームは通常スタイルを統一します。大文字に揃えると密なコードの中でキーワードと識別子を区別しやすくなります。
-
識別子の大文字小文字には注意
PostgreSQL のように引用符付き識別子で大文字小文字を区別するデータベースもあります。このツールはテーブル名や列名の表記を変えませんが、手作業で書き換える前に対象データベースの挙動を確認してください。
-
SQL パーサーや lint の代わりにはならない
このツールは字句的に整形するだけで、意味検証は行いません。存在しないテーブルや型の不一致、遅いクエリなどはデータベース、ORM、専用 SQL lint で確認してください。
-
SQL を実行しない
このページはテキストの整形のみを行い、データベースには接続せず、クエリも送信しません。たとえ DROP や DELETE を貼り付けてもテキストとして扱われるだけです。
使い方のヒント
SQL が長くなり、サブクエリや CTE が増えるほど、安定した整形習慣が効きます。レビューのノイズと誤解を減らすコツです。
- チームで方言、キーワード大文字小文字、インデントスタイルを統一し、レビューのたびに書式議論にならないようにします。
- 複雑な SELECT はまず安定したインデントで階層を開いてから読み、シンプルなマイグレーションは文間の空行を減らして詰めておきます。
- ストアドプロシージャ、長い CTE、深いサブクエリは 4 スペースが読みやすいことが多いです。
- ORM のデバッグでは、まず複数行に展開してから、インデックスや JOIN の見直しが必要かを判断します。
- コード、ログ、CLI に埋め込むときは手動でスペースを削るのではなく圧縮版を使うと、文字列リテラル内のスペースまで削ってしまう事故を防げます。
- マイグレーションでは文間に空行を残すと、DDL / DML ごとに視覚的な区切りができ、レビュー時にブロックを把握しやすくなります。
- 本番 SQL を扱う前にサニタイズします。ツールはローカル処理ですが、コピーした内容はチケット、チャット、ドキュメント、スクリーンショットに残る可能性があります。
制限事項
このツールは SQL のレイアウト、インデント、キーワードスタイルを扱います。クエリパーサー、SQL lint、マイグレーション実行、実行エンジンの代わりにはなりません。
- テーブル名、列名、型、権限が実在するかは検証しません。それらはデータベース本体、DBA ツール、ORM が担います。
- クエリの意味は書き換えません。JOIN の並べ替え、サブクエリのマージ、インデックス追加、方言構文の変換はデータベース専門家やリファクタリングツールに任せてください。
- SQL lint ではありません。複雑なルール、命名規約、アンチパターン検出は sqlfluff、SonarQube、pgFormatter などの専用ツールを使ってください。
- データベースには接続せず、SQL を実行しません。DROP や DELETE であってもテキストとして整形するだけです。
- MySQL と PostgreSQL の方言差(関数名、引用符、LIMIT / OFFSET など)を自動翻訳することはありません。方言は整形時のキーワード認識にだけ影響します。
- 処理はローカルですが、ローカルの安全性はあなたの端末、ブラウザ拡張、画面共有、コピー先に依存します。
- エディタの内容はこのブラウザに保存され、再読み込みしても復元されます。共有端末で使ったあとはクリアしてください。
よくある質問
方言、大文字小文字、インデント、圧縮、エラー位置、プライバシーなどについてのよくある質問です。
SQL はサーバーに送信されますか?
いいえ。解析、整形、圧縮、ファイル読み込み、コピー、ダウンロードはブラウザ内で完結します。DevKitLab はクエリやスキーマをサーバーに送信しません。
どの方言に対応していますか?
全部で 20 種です。MySQL、MariaDB、TiDB、SingleStore、PostgreSQL、Redshift、SQLite、DuckDB、BigQuery、Snowflake、Oracle PL/SQL、SQL Server (Transact-SQL)、Spark、Trino、Hive、ClickHouse、Couchbase N1QL、IBM Db2、IBM Db2 for i、そして汎用の標準 SQL に対応しています。
方言を間違えるとどうなりますか?
方言は主にどの語をキーワードと見なすか、引用符の扱いに影響します。多くの場合は読みやすさを保てますが、BigQuery のバッククオートや PostgreSQL のドル引用文字列など方言固有構文は別方言だとうまく整形されないことがあるため、実際のデータベースに合わせて選んでください。
キーワードが自動で大文字にならないのはなぜですか?
デフォルトの大文字小文字戦略は保持です。キーワードのオプションを大文字または小文字に切り替えると、その場で整形し直されます。
文字列リテラルは書き換えられますか?
いいえ。整形も圧縮も、トークンの間の空白と、キーワード、関数名、データ型の大文字小文字だけを変更します。引用符内の文字列、引用符付き識別子、パラメータプレースホルダは中の空白も含めてそのまま残ります。コメントも残りますが、圧縮のときだけ行コメントがブロックコメントに書き換えられます。後続の文を巻き込まないためです。
圧縮モードは何をしますか?
文を一行にまとめ、トークンの間の空白を落とします。ORM 呼び出し、ログフィールド、コマンドライン、一行クエリしか受けないツールに便利です。引用符の中はそのままで、行コメントはブロックコメントに書き換えられるので、後続の文がコメントに飲み込まれることはありません。文字列リテラル自体に改行が含まれる場合はその改行が残るため、結果が一行に収まらないこともあります。
解析失敗は SQL が壊れているという意味ですか?
ツールのパーサーが認識できないトークンに遭遇しただけのことが多いです(方言不一致、括弧の閉じ忘れ、特殊な拡張構文など)。データベースの実行エラーとは別物ですので、方言を変えるか構文を修正して再試行してください。
PL/SQL や T-SQL のストアドプロシージャを扱えますか?
一般的な PL/SQL と T-SQL の文本体は扱えますが、sql-formatter はストアドプロシージャの意味全体までサポートしているわけではありません。複雑なものはベンダー IDE や専用ツールに任せてください。
ここで SQL を実行したりデータベースに接続したりできますか?
いいえ。このツールはテキストを整形するだけで、データベースに接続せず、クエリも送信・実行しません。
大きな SQL ファイルも扱えますか?
数百 KB から数 MB のスクリプトなら問題ありません。ファイルの読み込みは 5 MB までです。それ以上は読み込みと整形でタブが長時間固まるためです。上限内でも数 MB の大量 INSERT は重くなるので、大きなマイグレーションは分割してから読み込んでください。
関連ツール
DevKitLab のデータツールでクエリやデータ関連のワークフローを続けられます。SQL の戻り値の JSON 整理、表形式データのプレビュー、関連テキストツールへのジャンプが可能です。