Naar de inhoud

JSON naar MySQL Schematransformatie — Numio

Genereert MySQL CREATE TABLE-instructies uit voorbeeld JSON. De root wordt een tabel met de naam generiek; elk genest object of elke array wordt een onderliggende tabel met een externe sleutel voor de primaire sleutel van de ouder.

Een genormaliseerde tabelindeling schetsen voor een API-payload voordat een echte migratie wordt geschreven.

JSON

MySQL Schema

Wanneer gebruik je dit?

  • Een genormaliseerde tabelindeling schetsen voor een API-payload voordat een echte migratie wordt geschreven.
  • Zien welke geneste objecten en arrays in een document hun eigen tabellen nodig hebben bij het verplaatsen van gegevens van een documentarchief naar MySQL.

Hoe werkt het

  1. Plak een JSON-object, of een reeks voorbeeldrecords die in één tabel zijn samengevoegd, in de linkereditor, of gebruik de knop Bestand laden om een UTF-8-bestand te openen.
  2. Lees de gegenereerde tabellen: de root is generiek, kinderen zijn generiek_<key>, gekoppeld door externe sleutels generic_id.
  3. Kopieer de SQL, hernoem de tabellen en pas de kolomtypen aan (bijvoorbeeld DECIMAL voor prijzen of VARCHAR-lengtes) voordat u deze uitvoert.

JSON voorbeeldobject

{
  "id": 1024,
  "total": 19.5,
  "coupon": null,
  "created_at": "2026-01-05T10:00:00Z",
  "scores": [4, 4.5],
  "items": [{ "sku": "A1", "qty": 2 }]
}

MySQL CREATE TABLE-instructies

CREATE TABLE generic (
  id INT,
  total DOUBLE,
  coupon TEXT,
  created_at TIMESTAMP,
  PRIMARY KEY (id)
);

CREATE TABLE generic_scores (
  generic_id INT,
  id INT,
  value DOUBLE,
  PRIMARY KEY (id),
  FOREIGN KEY (generic_id) REFERENCES generic(id)
);

CREATE TABLE generic_items (
  generic_id INT,
  id INT,
  sku TEXT,
  qty INT,
  PRIMARY KEY (id),
  FOREIGN KEY (generic_id) REFERENCES generic(id)
);

Details en beperkingen

Gehele getallen worden INT (BIGINT buiten het 32-bits bereik), andere getallen DOUBLE, tekenreeksen TEXT en booleans BOOLEAN. Er worden geen VARCHAR-lengtes, NOT NULL, AUTO_INCREMENT of indexen gegenereerd.

De primaire sleutel is een sleutel met de naam id of die _id bevat; als er geen bestaat, wordt er een id-kolom toegevoegd. Tekenreeksen die langer zijn dan 18 tekens en die als datums worden geparseerd, worden TIMESTAMP.

null-waarden worden TEXT-kolommen. Arrays van scalairen krijgen een onderliggende tabel met een waardekolom die uit alle elementen is getypt (de bovenstaande scores zijn DOUBLE).

Draait in uw browser; de uitvoer wordt niet gevalideerd tegen een MySQL-server.

FAQ

Waarom wordt een decimale waarde als DOUBLE getypt en niet als DECIMAL?

Het voorbeeld kan niet de nauwkeurigheid weergeven die u nodig hebt, dus niet-gehele getallen worden DOUBLE. Wijzig de geldkolommen handmatig in DECIMAL(p,s).

Kan ik de tabelnaam kiezen?

Nee. De hoofdtabel is altijd generiek en onderliggende tabellen zijn generiek_<key>. Hernoem ze in de gekopieerde SQL.

Genereert het INSERT-instructies?

Nee, alleen CREATE TABLE. Als u JSON-rijen wilt omzetten in INSERT-instructies, gebruikt u de tool JSON to SQL.

Specificaties en referenties