UTILS.
100% ブラウザ内で完結
🗄

JSON から SQL CREATE TABLE へ

JSON のオブジェクト配列から SQL の CREATE TABLE(および任意の INSERT)を推論し、MySQL、PostgreSQL、SQLite 向けにカラム型を自動選択します。

— ここに結果が表示されます —

このツールについて

JSON から SQL CREATE TABLE へのツールは、JSON のオブジェクト配列(または単一オブジェクト)を読み込み、実際に見た値から各カラムの型を選んで、対応する SQL テーブル定義を推論します。すべてブラウザ内で実行され、JSON はネイティブの JSON.parse で解析されデバイスから外に出ないため、API のダンプやデータベースのエクスポートを貼り付けて 1 ステップでテーブルを組み立てられます。

カラム型はフィールドごとに全行を通じて推論されます。すべて整数の値は INT(いずれかの値が 2,147,483,647 を超えると BIGINT)、小数を含む数値は指定した最大の整数部と小数部の桁数に合わせた DECIMAL(p,s)(float モードを選ぶと DOUBLE / REAL)、真偽値は TINYINT(1)/BOOLEAN、ISO 8601 文字列は DATETIME または DATE、ネストしたオブジェクトや配列は JSON/JSONB、残りの文字列は最長値より上の次の 2 のべき乗を N とする VARCHAR(N)(255 を超えると TEXT)になります。いずれかの行で null または欠損のカラムは NULLABLE のままになり、そうでなければ NOT NULL です。一意で非 null の id または uuid という名前のカラムは PRIMARY KEY に昇格され、整数キーには AUTO_INCREMENT / SERIAL / AUTOINCREMENT が追加されます。

方言トグルは MySQL、PostgreSQL(SERIAL, JSONB, TIMESTAMP, DOUBLE PRECISION)、SQLite(INTEGER / REAL / TEXT のアフィニティ)向けに型を書き換え、正しい区切り文字で識別子をクォートします(MySQL はバッククォート、その他は二重引用符)。INSERT オプションを有効にすると、行ごとに 1 つの INSERT 文も出力され、文字列・真偽値・数値・JSON 値が選んだ方言用にエスケープ・クォートされます。

よくある質問

どんな入力を想定していますか?
API やエクスポートの行のようなフラットなオブジェクトの JSON 配列、または 1 行テーブルとして扱われる単一の JSON オブジェクトです。全行のすべてのキーが合併されてカラムを構成し、オブジェクトでない要素は拒否されます。
カラム型はどう選ばれますか?
カラムごとに、見たすべての値から選ばれます。すべて整数は INT/BIGINT、小数は DECIMAL(p,s) または DOUBLE、真偽値は TINYINT(1)/BOOLEAN、ISO 日時は DATETIME/DATE、オブジェクト/配列は JSON、その他の文字列は VARCHAR(N)(255 文字を超えると TEXT)になります。
どの SQL 方言に対応していますか?
MySQL、PostgreSQL、SQLite です。方言トグルは型名を書き換え(Postgres は SERIAL, JSONB, TIMESTAMP、SQLite は INTEGER/REAL/TEXT のアフィニティ)、正しい識別子のクォートと自動採番の構文を使います。
主キーはどう決まりますか?
id または uuid という名前のカラムがすべての行に存在し、非 null かつ一意の値を持つ場合、PRIMARY KEY として記されます。整数キーには AUTO_INCREMENT(MySQL)、SERIAL(PostgreSQL)、AUTOINCREMENT(SQLite)も付きます。

その他のツール