100% ローカル — データがブラウザの外に出ることはありません

JSONをMySQLに変換|そのまま実行できるCREATE TABLEに

JSONのサンプルをMySQLのCREATE TABLEに変換します。列の型は値から決まり、VARCHAR(255) に収まらない文字列には TEXT が割り当てられます。

高速 プライベート Cookieゼロ

JSON 入力

MySQL 出力

このツールの動作

JSON の標本が CREATE TABLE になります。

{ "id": 1, "firstName": "Ada", "score": 9.5, "address": { "city": "Paris" } }
CREATE TABLE `root` (
  `id` BIGINT NOT NULL,
  `first_name` VARCHAR(255) NOT NULL,
  `score` DOUBLE NOT NULL,
  `address` JSON NOT NULL
);

列名は snake_case で、バッククォートで囲みます。鍵に予約語やハイフンがあっても困りません。同じ名前になる二つの鍵は、混ぜずに番号を付けます。

値の丈に合う列

文字列は VARCHAR(255) になります。ただし、標本がそこに収まらないと示した場合は別です。

{ "bio": "…301 文字…" }
  `bio` TEXT NOT NULL

MySQL は厳密モード——5.7 以降の既定——で、列より長い値をエラー 1406 で拒みます。ここで VARCHAR(255) を出せば、自分を生んだ文書を収められない表をお渡しすることになります。本物の欠陥で、この文章を書く過程で見つけ、直しました。

境目は標本の中で最も長い値から取っています。下限であって、約束ではありません。本番の文字列が貼ったものより長いなら、列を広げてください。

すべての行を、最初の一つだけでなく

[{ "a": 1 }, { "a": 2, "b": "x" }]
CREATE TABLE `root_item` (
  `a` BIGINT NOT NULL,
  `b` VARCHAR(255) NULL
);

以前、表は最初のオブジェクトだけから作られていました。だから、あなた自身の標本の二行目が挿入に失敗しました——Unknown column 'b' です。今は列がすべてのオブジェクトの和になり、一部に無い鍵は null 可になります。実際にそうだからです。

型についても同じです。ある行で 1、次の行で "x" になるキーは、先に現れたほうの型を取っていました。もう一方の値には入る列がありません。いまは JSON の列になり、両方を収めます。十行目で初めて現れた300文字の値も、一行目にあったときと同じように列を TEXT へ広げます。

作り出さないもの

  • 主キーも索引も、エンジンや文字集合の指定もありません。 どれもあなたのデータとサーバについての判断であり、文書は何も語りません。
  • 値があったところは NOT NULL、null と、一部の行に無い鍵は NULL です。
  • オブジェクトと配列は JSON の列になります。 関連表も外部キーもありません。標本は関係を見せられず、作り出せば推測が三つ重なります。

プライバシー

すべての処理はブラウザ内のJavaScriptだけで完結します。データがアップロードされることはないため、機密情報でも安心して利用でき、オフラインでも動作します。

よくある質問

なぜ一つの列だけ TEXT で、ほかは VARCHAR(255) なのですか。
その値が収まらなかったからです。既定は `VARCHAR(255)` ですが、MySQL は厳密モードで、より長い値をエラー 1406 で拒みます。つまり、その表は自分を生んだ標本を収められません。255 文字を超えると列は `TEXT` になります。実データが標本より長いなら、ご自分で広げてください。
主キーはどこですか。
どこにもありません。どの列が行を識別するかを、標本は語らないからです。ある文書で一意に見える `id` が、次の文書では重複するかもしれません。`PRIMARY KEY (id)` や `AUTO_INCREMENT` の代理キーを足すのは一行です。それはあなたのデータについての判断であって、読み取りではありません。
なぜ入れ子のオブジェクトが JSON の列なのですか。
SQL に入れ子の型は無く、標本は関係を見せないからです。`{"address": {"city": "Paris"}}` は結合する表かもしれませんし、その行に属する塊かもしれません。表と外部キーと向きを作り出せば、推測が三つ重なります。MySQL 5.7 以降は `JSON` として保存し、問い合わせもできます。

関連ツール