Outil d'inférence de schéma

Chaque nouvelle intégration commence de la même façon : une API renvoie un objet JSON et il vous faut un modèle pour le stocker. Saisir 20 champs à la main est fastidieux et source d'erreurs. Cet outil analyse un objet JSON d'exemple, choisit un type de colonne pour chaque clé et produit un schéma prêt à coller dans le format de votre choix : SQL CREATE TABLE, schéma Mongoose ou définition de modèle Sequelize.

Comment inférer un schéma à partir de JSON

  1. 1

    Collez un objet d'exemple

    Saisissez un objet JSON, ou un tableau d'objets (le premier objet du tableau est lu). Utilisez un enregistrement complet, tous les champs remplis, pour que chaque colonne reçoive un type.

  2. 2

    Choisissez le format de sortie

    SQL CREATE TABLE (style Postgres / MySQL / SQLite), Mongoose pour les applis Node.js sous MongoDB, ou Sequelize pour les applis relationnelles Node.js.

  3. 3

    Nommez la table ou le modèle

    Définit le nom de la table dans la sortie SQL, ou le nom du schéma ou du modèle dans la sortie Mongoose et Sequelize.

  4. 4

    Copiez le schéma généré

    Collez-le directement dans une migration ou un fichier de modèle comme point de départ.

Comment les types sont inférés

L’inférence est une estimation. L’outil lit les valeurs d’un objet d’exemple et choisit un type de colonne pour chaque clé à partir de la valeur qu’il voit. Il ne compare pas les enregistrements et ne devine pas quels champs sont facultatifs : donnez-lui donc un objet complet et représentatif.

Correspondance des types

Valeur JSON Type SQL Type Mongoose Type Sequelize
42 (entier) INTEGER Number DataTypes.INTEGER
3.14 (décimal) DECIMAL(10,2) Number DataTypes.FLOAT
"bonjour" (chaîne courte) VARCHAR(255) String DataTypes.STRING
chaîne de plus de 255 caractères 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] (tableau) JSON Object DataTypes.JSON
{ "nested": ... } (objet) JSON Object DataTypes.JSON

Ce que la sortie SQL ajoute

Le CREATE TABLE SQL commence toujours par une clé primaire auto-incrémentée :

id INTEGER PRIMARY KEY AUTOINCREMENT,

Les sorties Mongoose et Sequelize n’ajoutent pas de champ id, car ces deux bibliothèques le créent pour vous.

Valeurs par défaut et limites à garder en tête

  • Un seul objet est lu. Si vous collez un tableau, seul le premier élément est inspecté : ce sont ses champs qui définissent tout le schéma.
  • Une clé absente est une colonne absente. Les champs qui ne figurent pas dans l’objet d’exemple n’apparaissent tout simplement pas dans la sortie.
  • Les objets et tableaux imbriqués deviennent une seule colonne JSON. L’outil ne les développe pas en sous-tables, sous-schémas ni clés étrangères.
  • Aucune contrainte n’est générée. Les colonnes sont émises sans NOT NULL, unicité ni index : elles acceptent donc toutes les valeurs nulles tant que vous ne les resserrez pas.

Conseils pour un résultat plus propre

  • Utilisez un enregistrement entièrement rempli. Un champ à null dans votre exemple est typé en texte/chaîne, ce qui est rarement ce que vous voulez.
  • Renommez les mots réservés après la génération. Des champs comme type, order ou user devront être mis entre guillemets en SQL.
  • Considérez la sortie comme un échafaudage. Ajustez les longueurs VARCHAR et la précision DECIMAL, ajoutez des index, marquez les colonnes NOT NULL et choisissez de vraies clés avant la mise en production.

Questions fréquentes

Un objet ou un tableau imbriqué est associé à une seule colonne JSON (JSON en SQL et Sequelize, un champ de type Object en Mongoose). L’outil ne développe pas les structures imbriquées en sous-tables ou sous-schémas : vous les aplatissez ou les normalisez vous-même si besoin.

Non. Si vous collez un tableau d’objets, seul le premier objet est inspecté et ses clés définissent le schéma. Assurez-vous que ce premier enregistrement possède tous les champs qui vous intéressent, avec une vraie valeur dans chacun.

Non. Chaque colonne est émise avec un simple type : la sortie n’a donc ni clés étrangères, ni contraintes d’unicité, ni index, ni clauses NOT NULL. Ajoutez-les à la main, car ils encodent une intention que l’outil ne peut pas retrouver à partir d’un échantillon.

Choisissez SQL CREATE TABLE pour une migration de base de données relationnelle, Mongoose Schema pour une appli Node.js sous MongoDB, ou Sequelize Model pour une appli Node.js sur une base relationnelle via l’ORM Sequelize.

Outils similaires

Outil disponible dans d’autres langues