JSON構造からCREATE TABLEを自動生成する
JSONデータからSQLのCREATE TABLEスキーマを推論する方法を学びます。値からの型推論、nullable検出、主キー選択、方言固有のDDL生成を解説します。
Advanced Patterns
詳細な説明
JSONからCREATE TABLEの推論
JSONデータを挿入する前に、ターゲットテーブルの作成が必要なことが多いです。コンバーターはJSON構造と値の型を分析し、適切なCREATE TABLE文を生成できます。
JSONの例
[
{ "id": 1, "name": "Alice", "email": "alice@example.com", "age": 30, "score": 98.5, "active": true, "bio": null },
{ "id": 2, "name": "Bob", "email": "bob@example.com", "age": null, "score": 87.0, "active": false, "bio": "Developer" }
]
生成されるPostgreSQL DDL
CREATE TABLE users (
id INTEGER NOT NULL,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
age INTEGER,
score DOUBLE PRECISION NOT NULL,
active BOOLEAN NOT NULL,
bio TEXT,
PRIMARY KEY (id)
);
型推論ルール
コンバーターは配列全体の各キーのすべての値をスキャンします:
| 見つかったJSON値 | 推論されるSQL型 |
|---|---|
| 整数のみ | INTEGER(2^31を超える場合はBIGINT) |
| 小数を含む | DOUBLE PRECISION / FLOAT |
| 短い文字列のみ | VARCHAR(255) |
| 255文字を超える文字列 | TEXT |
| 真偽値のみ | BOOLEAN |
| 混合型 | TEXT(最も安全なフォールバック) |
Nullable検出
いずれかの行でカラムの値がnullであるか、行にそのキーが欠落している場合、カラムはnullableになります。そうでなければNOT NULLが追加されます。
主キーのヒューリスティクス
コンバーターは一般的な主キーパターンをチェックします:
- 一意の整数値を持つ
idという名前のカラム _idという名前のカラム(MongoDB規約)- 一意の文字列値を持つ
uuidという名前のカラム
MySQL DDL
CREATE TABLE users (
id INT NOT NULL,
name VARCHAR(255) NOT NULL,
email VARCHAR(255) NOT NULL,
age INT DEFAULT NULL,
score DOUBLE NOT NULL,
active TINYINT(1) NOT NULL,
bio TEXT DEFAULT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
CREATE TABLE + INSERTの組み合わせ
コンバーターは両方の文を一緒に生成でき、カラム型が挿入される値と一致することを保証します:
CREATE TABLE IF NOT EXISTS users ( ... );
INSERT INTO users (...) VALUES (...);
ユースケース
JSONデータを受け取りSQLバックエンドが必要な新機能を素早くプロトタイピングする際、CREATE TABLEの自動生成は時間を節約し型の一貫性を保証します。これは特にデータエンジニアが恒久的なスキーマを設計する前に未知のJSONデータセットを調査する場合に便利です。