SQLをブラウザ内で整形・構文チェックする
Databaseへ接続せず、6種類の方言から選んでSQLを整形・圧縮し、括弧・引用符・コメントの基本的な問題を確認できます。
SQL整形・圧縮・構文チェックツールを開く結論:最初の構造Errorを一つずつ直し、対象DBで再解析する
複数Errorが表示されても、最初の未終了Quoteや括弧を直すと後続Errorがまとめて消える場合があります。行・列と周辺抜粋を起点に、一つ前の開始Tokenまで戻ります。
整形前後で文字列、引用識別子、コメント、Placeholder、演算子、文の区切りが変わっていないか確認します。
FormatterはSQLを自動修復せず、Database固有の完全な構文検証や実行結果の保証も行いません。
原因と判断基準:表示位置と根本原因を分ける
Quoteが閉じていないと後続KeywordもStringとして扱われ、最後の行でErrorになることがあります。括弧も同様に、余分な閉じ括弧と不足した閉じ括弧を区別します。
簡易Checkで見つからないKeyword順、型、Function Argument、Clause固有ErrorはDatabaseのError Messageと公式Grammarで確認します。
| 確認対象 | 見るポイント | 判断後の対応 |
|---|---|---|
| 括弧 | ()のDepthと余分な閉じ | 対応位置を確認 |
| String | '...'の終端と'' Escape | Literalを保ったまま修正 |
| Identifier | ""・``・[] | 方言を選択 |
| Comment | --・/* */の終端 | 後続SQLの取込範囲を確認 |
整形後に確認するチェックリスト
- 対象DatabaseとVersion
- 文字列・識別子の引用符
- コメントとHintの保持
- 括弧・Statement区切り・Placeholder
- 対象DBまたはCIでの再検証
DevelopToolsのSQL Formatterで確認できること
SQL FormatterはSQLを実行せず、Tokenへ分解して文字列、引用識別子、コメントを保護しながら句と括弧の深さに合わせて整形します。ANSI SQL、Oracle、PostgreSQL、MySQL・MariaDB、SQL Server、SQLiteを選択でき、貼り付けと.sqlファイルの読込はブラウザ内だけで処理します。
| 項目 | 現行ツールの対応 |
|---|---|
| 処理 | 整形、1行圧縮、括弧・引用符・コメントの簡易構文チェック |
| 整形設定 | 2・4スペース・タブ、予約語の大文字・小文字、行頭・行末カンマ、AND・OR改行 |
| 保持設定 | コメント、空行、末尾改行。改行コードはLF・CRLFから選択 |
| 方言保護 | PostgreSQLドル引用符、Oracle代替引用符、MySQLバッククォート、SQL Server角括弧識別子 |
| 診断 | 括弧、引用符、コメントの未終了、行・列・周辺抜粋、文数・Parameter数・最大括弧深度 |
| 未対応 | DB接続、SQL実行、Schema・型・権限・実行計画・全方言構文の完全検証 |
整形・簡易構文チェック・DB実行を分けて考える
整形はToken間の空白と改行を読みやすくする処理です。簡易構文チェックは括弧、文字列、引用識別子、コメントなどが閉じているかを確認します。どちらも、テーブルやカラムの存在、Data Type、権限、Constraint、Stored Procedure全体、実行計画までは検証しません。
本番で使うSQLは、整形後の差分を確認したうえで対象DBのParser、Test Database、Migration Tool、CIのLinterなどへ渡します。見た目が整ったことと、安全かつ正しく実行できることを同じ判定にしないでください。
DevelopToolsはSQLをDatabaseへ送信・実行しません。「構文エラーなし」は対象DBでの実行成功を保証しません。
SQLを安全に整形して確認する共通手順
- 元SQLを複製し、Password、Token、顧客情報、接続先、実データをテスト値へ置き換えます。
- Oracle、PostgreSQL、MySQL・MariaDB、SQL Server、SQLite、ANSI SQLから対象方言を選びます。
- 最初に構文チェックを実行し、未終了の括弧、引用符、コメントと表示された行・列を確認します。
- 整形設定を一項目ずつ選び、文字列・コメント・Placeholderが変わっていないか差分を確認します。
- 整形結果を別名で保存し、対象DBの公式Parser、Test環境、Migration ToolまたはCIで再検証します。
- 実行前にJOIN条件、WHERE条件、Transaction範囲、更新・削除対象件数、実行計画を確認します。
UPDATEやDELETEは整形しても安全にはなりません。WHERE条件とTransaction、Backup、権限を別途確認します。
機密情報と大きなSQLを扱うときの注意点
貼り付け、ファイル読込、整形、圧縮、簡易構文チェック、コピー、保存はブラウザ内で完結します。LocalStorageへ保存するのは方言、インデント、Theme、Font、Editor Sizeなどの設定で、入力SQL本文や処理結果ではありません。
SQLにはSchema名、Table名、顧客ID、Email、Access Token、接続先、運用Commentなどが含まれます。ブラウザ内処理でも、画面共有、Clipboard履歴、Download先、Browser Extensionからの漏えいを考慮し、共有前はMasking Toolで置き換えます。
50万文字を超える入力では構文色分けを省略します。処理可能なSizeは端末とBrowserの空きMemoryに依存するため、巨大DumpはStatementやMigration単位へ分割します。
DB公式資料で方言と字句規則を確認する
SQLはデータベースごとに予約語、識別子の引用符、文字列、コメント、文の区切りが異なります。整形結果だけで実行可否を判断せず、利用中のDBとVersionに対応する公式資料を確認します。
具体例:閉じQuote不足で末尾にErrorが出るSQL
SELECT * FROM users WHERE status = 'OPEN AND created_at >= CURRENT_DATE; のようにStringが閉じていない例です。
元SQLを直接上書きせず、構文チェックと整形を分けて実行します。出力を文字列Diffで比較し、実行前に対象DBのTest環境でも確認します。
- SQLを貼り付けるか、.sqlファイルを1件読み込みます。
- 対象Databaseを選び、最初に構文チェックを実行します。
- Error行だけでなくstatusのLiteral開始まで戻り、正しい値の末尾へQuoteを追加して再チェックします。
- 整形結果と元SQLを比較し、Literal、Identifier、Comment、Parameterが同じことを確認します。
- 対象DBのParserまたはTest環境で構文と実行結果を検証します。
値を推測して自動補完せず、仕様またはParameter Binding元から正しいLiteralを確認します。
よくある質問
- 入力したSQLはDatabaseやサーバーへ送信されますか?
- 送信されません。SQLの読込、整形、圧縮、簡易構文チェック、コピー、保存はブラウザ内で処理し、Databaseへ接続・実行しません。
- 構文チェックが成功すれば、そのまま本番で実行できますか?
- 保証されません。括弧、引用符、コメントなどの基本的なToken構造を確認する機能で、Schema、型、権限、方言の完全なGrammar、実行計画、更新対象は対象DBで確認が必要です。