シンプルなJSONオブジェクトをSQL INSERT文に変換する
フラットなJSONオブジェクトを単一のSQL INSERT文に変換する方法を学びます。カラムマッピング、値のクォート、文字列・数値・真偽値の基本的な型処理を解説します。
Basic INSERT
詳細な説明
JSONからSQL INSERTへ
最も基本的なJSON-to-SQL変換は、フラットなJSONオブジェクトをINSERT INTO文に変換することです。各キーがカラム名になり、各値は型に応じてクォートされたリテラルまたはクォートなしのリテラルになります。
JSONの例
{
"id": 1,
"name": "Alice",
"email": "alice@example.com",
"age": 30,
"active": true
}
生成されるSQL
INSERT INTO users (id, name, email, age, active)
VALUES (1, 'Alice', 'alice@example.com', 30, TRUE);
型マッピングルール
| JSON型 | SQL表現 |
|---|---|
| 文字列 | シングルクォートリテラル('value') |
| 数値(整数) | クォートなし数値リテラル |
| 数値(小数) | クォートなし数値リテラル |
| 真偽値 | TRUE / FALSE(MySQLでは1 / 0) |
| null | NULL |
カラム命名
JSONキーはそのままカラム名として使用されます。キーにスペースや予約語が含まれる場合、ターゲットデータベースの方言に応じてダブルクォート("column name")またはバックティック(\column name``)でラップされます。
文字列エスケープ
文字列値内のシングルクォートはエスケープが必要です。標準的なSQLのアプローチは、シングルクォートを二重にすることです:O'Brienは'O''Brien'になります。これによりSQLインジェクションと構文エラーを防ぎます。
なぜJSONをSQLに変換するのか?
多くのワークフローでは、JSON形式のデータ(API、設定ファイル、エクスポートから)を受け取り、リレーショナルデータベースに永続化する必要があります。手動でINSERT文を書くのは面倒でエラーが起きやすいです。自動変換により、一貫したクォート、正確なエスケープ、適切な型処理が保証されます。
ユースケース
NoSQLデータベースやREST APIレスポンスからリレーショナルデータベースにデータを移行する際、個別のJSONレコードを行として挿入する必要があります。自動変換により手動のSQL記述が不要になり、クォートやエスケープのエラーリスクが軽減されます。