本文へスキップ

SQLフォーマッターベータ

SQLクエリを句(SELECT、FROM、WHEREなど)ごとに改行して読みやすく整形します。MySQL・PostgreSQL・T-SQLなど方言も選べます。入力はブラウザの外に出ません。

0文字 · 0行
キーワードの大文字・小文字

結果0文字 · 0行

使い方

入力欄にSQLを貼り付けると、句(SELECT、FROM、WHERE、JOINなど)ごとに改行・インデントされ、読みやすい形に整形されます。「言語」で使っているデータベースを選び、キーワードの大文字・小文字(大文字・小文字・入力のまま)、インデント幅(半角スペース2つ・4つ・タブ)、クエリ間の空行の数を好みに合わせて変更できます。セミコロン(;)で区切った複数のクエリを一度に貼り付けても、それぞれ整形されます。

方言によって構文が異なります

SQLには標準がありますが、実際のデータベースごとに細かい構文が少しずつ異なります。例えばBigQueryはテーブル名にバッククォート(`)を使い、T-SQL(SQL Server)には TOP N 構文や角括弧で囲んだ識別子があります。方言を間違えると、実際には問題のないクエリでも解析に失敗してエラーになることがあるため、標準SQL・MySQL・PostgreSQL・SQLite・T-SQL(SQL Server)・BigQueryの中から、実際に使っているDBMSに合った方言を「言語」で選ぶことが大切です。

エラーが出たときは

貼り付けたSQLを整形用の構文規則で解析できない場合、結果の代わりにエラーが表示されます。ライブラリがどこで詰まったかわかる場合は、何行目・何列目かも一緒に表示されるので、その付近で括弧が閉じられていないか、選んだ方言に合わない構文を使っていないか確認してください。

なぜ「圧縮」機能がないのか

このツールは整形機能のみを提供しており、1行にまとめる圧縮(minify)機能は搭載していません。文字列リテラルやコメントの中の空白まで安全に区別して取り除くにはSQLの構文を正確に解析する必要があり、使用しているライブラリ(sql-formatter)にはその機能がなく、無理に自作すると文字列の内容が壊れる危険があるためです。ファイルサイズを小さくしたい場合は、インデント幅を狭くし、クエリ間の空行を0にする方法を試してみてください。

プライバシー

貼り付けたSQLはこのブラウザの中だけで処理され、どこにも保存・送信されません。整形エンジン(sql-formatter)は必要なときにブラウザがダウンロードしてその場で実行するだけで、クエリの内容をどこかに送ることはありません。

参考資料

よくある質問

どの方言を選べばいいですか?

使っているデータベースに合わせて選んでください。MySQL・PostgreSQL・SQLiteのように実際のDBMS名があればそれを選び、特定のDBMSに依存していない、または標準的な構文だけを使う場合は「標準SQL」を選びます。方言によって文字列の引用方法や識別子の書き方(BigQueryのバッククォート、T-SQLの角括弧など)が異なるため、方言を間違えると問題のないクエリでもエラーになることがあります。

なぜ圧縮(1行にまとめる)機能がないのですか?

文字列リテラルやコメントの中の空白を壊さずに安全に取り除くには、SQLの構文を正確に解析する必要がありますが、このツールが使っているライブラリ(sql-formatter)には整形機能しかなく、1行にまとめる機能はありません。無理に空白だけを削除する実装にすると文字列の内容を壊してしまう危険があるため、あえて実装していません。もっとコンパクトにしたい場合は、インデント幅を狭くし、クエリ間の空行を0にする方法を試してください。

セミコロンで区切った複数のクエリをまとめて整形できますか?

はい。セミコロン(;)で区切った複数のクエリを貼り付けると、それぞれ整形されます。「クエリ間の空行」オプションで、各クエリの間に入れる空行の数を指定できます。

複雑なクエリや方言固有の構文にも対応していますか?

ほとんどの場合は対応しています。ただし整形には構文の解析が必要なため、選んだ方言でサポートされていない構文や、実際に構文エラーがあるSQLは、整形結果の代わりにエラーとして表示されます。可能な場合は、何行目・何列目で解析が止まったかも一緒に表示します。

使用しているオープンソース: sql-formatter (MIT), nearley (MIT)