Schemainferensverktyg

Varje ny integration börjar likadant: ett API returnerar en JSON-klump och du behöver en modell att lagra den i. Att skriva 20 fält för hand är tråkigt och felbenäget. Det här verktyget tolkar ett JSON-exempelobjekt, väljer en kolumntyp för varje nyckel och skapar ett klart-att-klistra-in schema i det format du vill ha: SQL CREATE TABLE, Mongoose-schema eller Sequelize-modelldefinition.

Så här härleder du ett schema från JSON

  1. 1

    Klistra in ett exempelobjekt

    Ange ett JSON-objekt, eller en array av objekt (det första objektet i arrayen läses). Använd en komplett post med alla fält ifyllda så att varje kolumn får en typ.

  2. 2

    Välj utdataformat

    SQL CREATE TABLE (Postgres- / MySQL- / SQLite-stil), Mongoose för Node.js-appar med MongoDB eller Sequelize för relationella Node.js-appar.

  3. 3

    Namnge tabellen eller modellen

    Anger tabellnamnet i SQL-utdatan, eller schema- eller modellnamnet i Mongoose- och Sequelize-utdatan.

  4. 4

    Kopiera det genererade schemat

    Klistra in det direkt i en migration eller en modellfil som utgångspunkt.

Så härleds typerna

Inferensen är en bästa gissning. Verktyget läser värdena i ett exempelobjekt och väljer en kolumntyp för varje nyckel utifrån värdet det ser. Det jämför inte poster och gissar inte vilka fält som är valfria, så ge det ett komplett och representativt objekt.

Typmappning

JSON-värde SQL-typ Mongoose-typ Sequelize-typ
42 (heltal) INTEGER Number DataTypes.INTEGER
3.14 (decimaltal) DECIMAL(10,2) Number DataTypes.FLOAT
"hej" (kort sträng) VARCHAR(255) String DataTypes.STRING
sträng längre än 255 tecken TEXT String DataTypes.STRING
"2026-04-18T10:00:00Z" TIMESTAMP Date DataTypes.DATE
"2026-04-18" DATE Date DataTypes.DATEONLY
true / false BOOLEAN Boolean DataTypes.BOOLEAN
null TEXT String DataTypes.STRING
[1, 2, 3] (array) JSON Object DataTypes.JSON
{ "nested": ... } (objekt) JSON Object DataTypes.JSON

Vad SQL-utdatan lägger till

SQL CREATE TABLE börjar alltid med en automatiskt räknande primärnyckel:

id INTEGER PRIMARY KEY AUTOINCREMENT,

Mongoose- och Sequelize-utdatan lägger inte till något id-fält, eftersom båda biblioteken skapar ett åt dig.

Standardvärden och gränser att ha i åtanke

  • Ett objekt läses. Om du klistrar in en array granskas bara det första elementet, så det är dess fält som definierar hela schemat.
  • En saknad nyckel är en saknad kolumn. Fält som inte finns i exempelobjektet syns helt enkelt inte i utdatan.
  • Nästlade objekt och arrayer blir en enda JSON-kolumn. Verktyget veckar inte ut dem i undertabeller, underscheman eller främmande nycklar.
  • Inga villkor genereras. Kolumner skapas utan NOT NULL, unikhet eller index, så alla tillåter null tills du stramar åt dem.

Tips för ett renare resultat

  • Använd en helt ifylld post. Ett fält som är null i ditt exempel typas som text/sträng, vilket sällan är det du vill ha.
  • Byt namn på reserverade ord efter genereringen. Fält som type, order eller user måste sättas inom citattecken i SQL.
  • Behandla utdatan som en byggnadsställning. Justera VARCHAR-längder och DECIMAL-precision, lägg till index, markera kolumner som NOT NULL och välj riktiga nycklar innan du går i produktion.

Vanliga frågor

Ett nästlat objekt eller en nästlad array mappas till en enda JSON-kolumn (JSON i SQL och Sequelize, ett Object-fält i Mongoose). Verktyget veckar inte ut nästlade strukturer i undertabeller eller underscheman, så du plattar ut eller normaliserar dem själv vid behov.

Nej. Om du klistrar in en array av objekt granskas bara det första objektet och det är dess nycklar som definierar schemat. Se till att den första posten har alla fält du bryr dig om, med ett riktigt värde i var och en.

Nej. Varje kolumn skapas med enbart en typ, så utdatan har inga främmande nycklar, unikhetsvillkor, index eller NOT NULL-satser. Lägg till dem för hand, eftersom de kodar en avsikt som verktyget inte kan återskapa ur ett stickprov.

Välj SQL CREATE TABLE för en migration av en relationsdatabas, Mongoose Schema för en Node.js-app på MongoDB, eller Sequelize Model för en Node.js-app på en relationsdatabas via Sequelize-ORM:en.

Relaterade verktyg

Verktyget finns på andra språk