SQL to JSON — SQL INSERT 文を JSON 配列に変換
SQL INSERT 文を JSON 配列に変換します。カラム名の解析、引用符付き値の処理、データ型の推論を行い、ブラウザ内で実行されるためアップロードは不要です。
SQL INSERT to JSON
Convert SQL INSERT statements to JSON array format. Works with column-named inserts and bare value inserts. Auto-detects NULL, numbers, and strings. Works entirely in your browser.
SQL INSERT 文は、現在も日常的に本番運用されている最も古い機械可読データ形式です。1970 年代以来、あらゆるリレーショナルデータベースが INSERT に対応し、あらゆるデータベースダンプツール(mysqldump、pg_dump、sqlite3 .dump)が主な出力形式として INSERT 文を生成してきました。一方、JSON は Web API、設定ファイル、あらゆる NoSQL ドキュメントストアのネイティブ言語です。この両者の橋渡しを担うのが、SQL の値構文を理解するパーサーです。エスケープシーケンスを含む引用符付き文字列、整数位と科学記数法の数値リテラル、NULL、ブール定数、16 進エンコードされたバイナリを扱い、それぞれのタプルをカラム名をキーとする JSON オブジェクトへとマッピングします。
このパーサーは、現実世界でよく現れる 3 種類の INSERT 形式に対応します。カラム名を明示した単一行 INSERT、コンマ区切りの値グループによる複数行一括 INSERT、そしてカラムリストが省略された INSERT(自動生成されたダンプで一般的です)。出力は行ごとに 1 オブジェクトの配列となり、これは JSON を扱うあらゆるツールが期待する形式です。そこからの変換パイプラインはオープンになっています。JSON を JSON-to-CSV ツールに流してスプレッドシートへエクスポートするもよし、JSON-to-TypeScript ツールに渡し API に型付きの形で消費させるもよし、JSON Schema Generator を使って元のテーブル定義と一致するバリデーションスキーマを生成するもよしです。ツールはすべてブラウザ内で動作するため、機密データを含むデータベースダンプが外部にアップロードされることはありません。
使い方
SQL INSERT を貼り付ける
1 つ以上の INSERT INTO 文を貼り付けます。パーサーはテーブル名、カラムリスト、値のタプルを抽出します。コンマ区切りの値グループを持つ複数行一括 INSERT も完全にサポートされています。
推論されたカラムを確認する
パーサーはテーブル名に続く括弧内のリストから自動的にカラム名を検出します。INSERT 文にカラムリストが省略されている場合、列は col_0、col_1 などの名前で生成されます。出力オプションでリネームできます。
JSON としてエクスポートする
JSON 配列をクリップボードにコピーするか、.json ファイルとしてダウンロードします。コンパクト(単一行)と整形出力(インデント幅をカスタマイズ可能)を選択できます。
よくある質問
異なる SQL 方言に対応していますか?
はい。MySQL、PostgreSQL、SQLite、SQL Server の INSERT 構文はすべてサポートされています。パーサーはバッククォート引用(MySQL)、ダブルクォート引用(PostgreSQL)、角括弧引用(SQL Server)のカラム名を区別なく扱います。
NULL 値やエスケープ文字を含む文字列はどうなりますか?
NULL は JSON の null にマッピングされます。エスケープされたシングルクォート(`O''Brien`)は `O'Brien` にアンエスケープされます。PostgreSQL 形式のバックスラッシュエスケープ文字列(`E'line\nbreak'`)は、JSON 出力において実際の改行文字に変換されます。
複数行にわたる INSERT を解析できますか?
はい。パーサーはトークン化の前段階で空白を正規化するため、20 行にわたるインデント付きの INSERT 文も、同じ文を 1 行で書いた場合とまったく同じように解析されます。
INSERT IGNORE や ON DUPLICATE KEY がある場合はどうなりますか?
IGNORE 句および ON DUPLICATE KEY UPDATE 句は除去され、INSERT 部分のみが出力に使用されます。生成される JSON は「本来挿入されるはずだった」データを表しており、競合解決の修飾子は無視されます。
制限事項
- DDL は解析対象外CREATE TABLE、ALTER TABLE、その他のスキーマ文は無視されます。本ツールは INSERT 文のみを解析します。テーブル定義を抽出するには、専用の SQL パーサーまたはデータベース付属のダンプツールを使用してください。
- サブクエリは非対応`INSERT ... SELECT` 文は変換できません。本ツールは明示的な値のリストを必要とします。データベース上でまず SELECT を実行し、結果セットをネイティブ関数で JSON に変換してください。
- 型推論はヒューリスティックです引用符で囲まれた数値(`'42'`)は、文字列型のカラムとして SQL ソース上で宣言されているため、文字列のまま保持されます。本ツールはカラムの型が暗に示すスキーマを強制変更しません。
プラットフォーム別の注意点
- macOS
- macOS 上の MySQL と PostgreSQL は、いずれも `mysqldump` と `pg_dump` で INSERT 文をエクスポートできます。本ツールは、データベースに触れずにダンプから一部の行だけを取り出し、JSON ベースのワークフローに組み込む用途に適しています。
- Linux
- `pg_dump --data-only --inserts` が出力する INSERT 文はこのツールと互換性があります。貼り付ける前に `grep` で特定のテーブルを抽出しておくと便利です。
- Web
- すべてブラウザ内で実行されます。SQL 文が端末から外部に送信されることは一切ないため、本番データを含むデータベースダンプを扱う際に特に有用です。