SQL 変換(SQL Conversion)とは、SQL スクリプト内のデータを抽出し、JSON、CSV、XML、YAML、HTML、Markdown など他のデータ形式に再構成するプロセスを指します。SQL(Structured Query Language、構造化クエリ言語)はリレーショナルデータベースの標準クエリ言語で、データベースエクスポートツール(mysqldump、pg_dump など)は通常データを INSERT 文形式の SQL スクリプトとして出力します。この形式はデータベースインポートには便利ですが、プログラムの読み込み、データ分析、システム間交換には不便なため、より汎用的な形式への変換が必要になります。
一般的な SQL データエクスポートスクリプトには 2 種類の文が含まれます:CREATE TABLE はテーブル構造(列名、データ型、制約)を定義し、INSERT INTO ... VALUES (...) が実際のデータを挿入します。本ツールはこの 2 種類の文を解析し、CREATE TABLE から列定義と型情報を、INSERT から実際のデータ行を抽出し、ユーザーが選択した形式に再構成して出力します。解析プロセスはすべてブラウザ内で完結し、バックエンドサービスに依存しません。
なぜ SQL を他の形式に変換する必要があるのでしょうか?SQL は汎用的ですが、次の场景では不便です:第一に、フロントエンドプログラムでは JSON の方が SQL よりはるかに読みやすく、SQL パーサーを導入する必要がありません。第二に、Excel、Google Sheets などの表計算ソフトは SQL ではなく CSV をネイティブでサポートします。第三に、設定ファイルやドキュメントの场景では YAML や Markdown の方が SQL より読みやすいです。第四に、システム間データ交換では XML や JSON が中立的な形式としてよく使われます。SQL をこれらの汎用形式に変換することで、より多くのツールや言語がデータを直接消費できるようになります。
本ツールの SQL パーサーは手書き実装で、INSERT 文と CREATE TABLE 文の解析に特化しています。INSERT 文については、単一値タプル(INSERT INTO t (a,b) VALUES (1,2))と多値タプル(INSERT INTO t (a,b) VALUES (1,2), (3,4), (5,6))の両方の構文をサポートし、列名に従ってデータを自動マッピングします。CREATE TABLE 文については、列定義、データ型(VARCHAR(255)、INT、DECIMAL(10,2) など括弧付き長さ)、NOT NULL、PRIMARY KEY、IF NOT EXISTS などの制約と句を解析し、括弧のネストを正しく処理して誤った分割を防ぎます。
型認識は SQL 変換の鍵です。ツールは値のリテラル形式に基づいて型を自動判定します:単一引用符またはダブルクォートで囲まれたものは文字列、NULL(大文字小文字区別なし)は空値、TRUE/FALSE はブール値、0x...、X'...'、B'...' は 16 進数リテラル、純粋な数値(符号、小数点、科学記法を含む)は数値とみなされます。この自動型認識により、変換後の JSON、CSV などの形式が元のデータセマンティクスを保持し(数値の 1 が文字列の "1" にならない)、下流プログラムが正しく処理できます。
データベース方言ごとの引用符スタイルの違いは、SQL 解析でよくある落とし穴です。MySQL は識別子(テーブル名、列名)をバッククォート(`)で囲み、PostgreSQL はダブルクォート(")、SQL Server/T-SQL は角括弧([])、標準 SQL もダブルクォートを使用します。本ツールの unquoteIdentifier 関数はこれらの引用符を自動的に認識・除去し、引用符内のエスケープ(`` → `、"" → ")も処理します。SQL 再構築モードでは、対象方言に応じた引用符スタイルで INSERT 文を再生成できます。
SQL 文字列のエスケープはもう一つの重要な技術ポイントです。SQL 標準では文字列内の単一引用符をダブルクォートでエスケープし('It''s' は It's を表す)、MySQL はバックスラッシュエスケープ(\n、\t、\'、\"、\\、\0、\Z など)もサポートします。本ツールの文字列パーサーは両方のエスケープメカニズムを処理し、元の文字列内容を正しく復元します。CSV 変換時は RFC 4180 標準に従いカンマ、引用符、改行を含むフィールドを再エスケープし、XML/HTML 変換時は &、<、>、"、' などの特殊文字をエスケープします。
純フロントエンド処理は本ツールの中核設計原則です。すべての SQL 解析とデータ変換はブラウザの JavaScript エンジン内で実行され、いかなるデータもサーバーに送信されません。つまり、SQL スクリプトにユーザープライバシー、商業的機密情報、社内データベース構造が含まれていても、外部に漏洩することはありません。この設計は本番データベースのエクスポート処理に特に適しており、データコンプライアンスの懸念がありません。また、フロントエンド処理はネットワーク遅延がなく、変換速度は端末の CPU とメモリのみに制限されます。
本ツールは従来のコマンドライン SQL 変換ツール(sql2csv、sqlparser など)と比較していくつかの利点があります:インストールや環境設定が不要でページを開けばすぐ使える、視覚的インターフェースで変換結果をリアルタイムプレビュー、複数の出力形式をワンクリックで切り替え可能、サンプルデータとヘルプドキュメントを内蔵、モバイル対応デザインでどこでも使えるなどです。一方で、本ツールはデータ抽出に特化し、複雑な方言差異(PostgreSQL の JSONB 演算子、MySQL の ON DUPLICATE KEY UPDATE など)や高度な機能(ストアドプロシージャ、関数、トリガー)は処理しません。そのようなニーズにはデータベースネイティブツールや専用 ETL プラットフォームの使用を推奨します。
SQL 変換ツールを使う際、いくつかのベストプラクティスに留意してください:第一に、変換前に SQL スクリプトが実際のデータ(INSERT 文)を含んでいるか、クエリ文(SELECT)のみでないかを確認してください。SELECT は解析されません。第二に、複数テーブルの SQL スクリプトでは「複数テーブル個別出力」を有効にしてテーブル構造情報を保持することを推奨します。第三に、日本語を含む SQL を処理する場合、CSV 出力で「BOM を含める」を有効にして Excel がエンコーディングを正しく認識できるようにしてください。第四に、大容量の SQL dump を処理する場合は「整形出力」をオフにして出力サイズを削減してください。第五に、クロスデータベース移行時は「SQL 再構築」モードで方言を切り替えられますが、複雑な型(PostgreSQL 配列、JSONB など)は手動調整が必要な場合があります。