Convertir JSON en schéma MySQL — Numio
Génère des instructions CREATE TABLE MySQL à partir d’un exemple JSON. La racine devient une table nommée generic ; chaque objet ou tableau imbriqué devient une table enfant avec une clé étrangère vers la clé primaire du parent.
Esquisser un schéma de tables normalisé pour le payload d’une API avant d’écrire une vraie migration.
JSON
MySQL Schema
Quand l’utiliser
- Esquisser un schéma de tables normalisé pour le payload d’une API avant d’écrire une vraie migration.
- Voir quels objets et tableaux imbriqués d’un document nécessiteraient leurs propres tables lors d’une migration d’une base orientée documents vers MySQL.
Mode d’emploi
- Collez dans l’éditeur de gauche un objet JSON, ou un tableau d’enregistrements d’exemple fusionnés en une seule table, ou utilisez le bouton de chargement de fichier pour ouvrir un fichier UTF-8.
- Lisez les tables générées : la racine est generic, les enfants sont generic_<key>, reliés par des clés étrangères generic_id.
- Copiez le SQL, puis renommez les tables et ajustez les types de colonnes (par exemple DECIMAL pour les prix, ou les longueurs de VARCHAR) avant de l’exécuter.
Objet JSON d’exemple
{
"id": 1024,
"total": 19.5,
"coupon": null,
"created_at": "2026-01-05T10:00:00Z",
"scores": [4, 4.5],
"items": [{ "sku": "A1", "qty": 2 }]
}Instructions CREATE TABLE MySQL
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) );
Détails et limites
Les entiers deviennent INT (BIGINT hors de la plage 32 bits), les autres nombres DOUBLE, les chaînes TEXT et les booléens BOOLEAN. Aucune longueur de VARCHAR, aucun NOT NULL, AUTO_INCREMENT ni index n’est généré.
La clé primaire est une clé nommée id ou contenant _id ; s’il n’y en a pas, une colonne id est ajoutée. Les chaînes de plus de 18 caractères interprétables comme des dates deviennent TIMESTAMP.
Les valeurs null deviennent des colonnes TEXT. Les tableaux de scalaires donnent une table enfant avec une colonne value typée d’après tous les éléments (scores ci-dessus est DOUBLE).
S’exécute dans votre navigateur ; la sortie n’est pas validée sur un serveur MySQL.
FAQ
Pourquoi une valeur décimale est-elle typée DOUBLE et non DECIMAL ?
L’exemple ne peut pas indiquer la précision dont vous avez besoin, donc les nombres non entiers deviennent DOUBLE. Passez à la main les colonnes de montants en DECIMAL(p,s).
Puis-je choisir le nom de la table ?
Non. La table racine est toujours generic et les tables enfants sont generic_<key>. Renommez-les dans le SQL copié.
Génère-t-il des instructions INSERT ?
Non, seulement CREATE TABLE. Pour transformer des lignes JSON en instructions INSERT, utilisez l’outil JSON vers SQL.