UTILS.
100% in de browser
🗄

JSON naar SQL CREATE TABLE

Leid een SQL CREATE TABLE (en optionele INSERTs) af uit een JSON-array van objecten, waarbij kolomtypes automatisch worden gekozen voor MySQL, PostgreSQL of SQLite.

— uitvoer verschijnt hier —

Over deze tool

De tool JSON naar SQL CREATE TABLE leest een JSON-array van objecten (of een enkel object) en leidt een bijpassende SQL-tabeldefinitie af, waarbij het type van elke kolom wordt gekozen uit de waarden die het daadwerkelijk ziet. Het draait volledig in je browser — de JSON wordt geparseerd met de native JSON.parse en verlaat je apparaat nooit — dus je kunt een API-dump of een database-export plakken en in één stap een tabel steigeren.

Kolomtypes worden per veld over elke rij afgeleid: waarden die allemaal gehele getallen zijn worden INT (BIGINT wanneer een waarde 2.147.483.647 overschrijdt), getallen met decimalen worden DECIMAL(p,s) gedimensioneerd naar de breedste integer- en fractiecijfer-aantallen die je opgaf (of DOUBLE / REAL wanneer je de float-modus kiest), booleans worden afgebeeld op TINYINT(1)/BOOLEAN, ISO 8601-strings op DATETIME of DATE, geneste objecten en arrays worden JSON/JSONB, en resterende strings worden VARCHAR(N) waarbij N de eerstvolgende macht van twee boven de langste waarde is (TEXT zodra dat 255 overschrijdt). Een kolom die in enige rij null of ontbrekend is blijft NULLABLE; anders is deze NOT NULL. Een unieke, niet-null kolom genaamd id of uuid wordt gepromoveerd tot de PRIMARY KEY, met AUTO_INCREMENT / SERIAL / AUTOINCREMENT toegevoegd voor integer-sleutels.

Een dialect-schakelaar herschrijft de types voor MySQL, PostgreSQL (SERIAL, JSONB, TIMESTAMP, DOUBLE PRECISION), of SQLite (INTEGER / REAL / TEXT-affiniteiten) en voorziet identifiers van aanhalingstekens met de juiste delimiter (backticks voor MySQL, dubbele aanhalingstekens elders). Zet de INSERTs-optie aan om ook één INSERT-statement per rij te produceren, met strings, booleans, getallen en JSON-waarden escaped en van aanhalingstekens voorzien voor het gekozen dialect.

Veelgestelde vragen

Welke invoer verwacht het?
Een JSON-array van platte objecten, zoals rijen uit een API of export, of een enkel JSON-object dat als een tabel met één rij wordt behandeld. Alle sleutels over de rijen worden verenigd om de kolommen te vormen; niet-object-elementen worden afgewezen.
Hoe worden kolomtypes gekozen?
Per kolom, uit elke geziene waarde: volledig-integer naar INT/BIGINT, decimalen naar DECIMAL(p,s) of DOUBLE, booleans naar TINYINT(1)/BOOLEAN, ISO datum-tijden naar DATETIME/DATE, objecten/arrays naar JSON, en andere strings naar VARCHAR(N) (TEXT boven 255 tekens).
Welke SQL-dialecten worden ondersteund?
MySQL, PostgreSQL en SQLite. De dialect-schakelaar herschrijft de typenamen (SERIAL, JSONB, TIMESTAMP voor Postgres; INTEGER/REAL/TEXT-affiniteiten voor SQLite) en gebruikt de juiste identifier-aanhalingstekens en auto-increment-syntaxis.
Hoe wordt de primary key bepaald?
Als een kolom genaamd id of uuid aanwezig en niet-null is in elke rij met unieke waarden, wordt deze als PRIMARY KEY gemarkeerd. Een integer-sleutel krijgt ook AUTO_INCREMENT (MySQL), SERIAL (PostgreSQL), of AUTOINCREMENT (SQLite).

Meer tools