Comparateur de Schema Base de Donnees

Compare deux schemas et genere un brouillon de migration

Prend en charge SQL DDL ou JSON/YAML et produit les changements de tables, colonnes, index et cles etrangeres.

Exemples de résultats

2 Exemples

Comparer un DDL SQL et preparer une migration PostgreSQL

Montre lajout dune colonne obligatoire et dun index puis genere le SQL associe.

{
  "summary": {
    "tablesAdded": 0,
    "tablesRemoved": 0,
    "columnsAdded": 1,
    "columnsRemoved": 0,
    "columnsChanged": 0,
    "indexesChanged": 1,
    "foreignKeysChanged": 0,
    "totalChanges": 2
  },
  "migrationSQL": "ALTER TABLE users ADD COLUMN email TEXT NOT NULL;\nCREATE INDEX idx_users_email ON users (email);"
}
Voir paramètres d'entrée
{ "sourceSchema": "CREATE TABLE users (\n id INT PRIMARY KEY,\n name TEXT\n);", "targetSchema": "CREATE TABLE users (\n id INT PRIMARY KEY,\n name TEXT,\n email TEXT NOT NULL\n);\nCREATE INDEX idx_users_email ON users (email);", "schemaFormat": "sql", "dialect": "postgresql" }

Comparer des schemas JSON avec alerte SQLite

Compare des resumes JSON ou une table et une colonne sont supprimees, avec la note de reconstruction SQLite.

{
  "summary": {
    "tablesRemoved": 1,
    "columnsRemoved": 1
  },
  "migrationSQL": "DROP TABLE audit_logs;\n-- SQLite requires table rebuild to drop column users.email"
}
Voir paramètres d'entrée
{ "sourceSchema": "{\n \"tables\": {\n \"users\": {\n \"columns\": {\n \"id\": {\n \"type\": \"INTEGER\",\n \"primaryKey\": true,\n \"nullable\": false\n },\n \"email\": {\n \"type\": \"TEXT\",\n \"nullable\": false\n }\n }\n },\n \"audit_logs\": {\n \"columns\": {\n \"id\": {\n \"type\": \"INTEGER\",\n \"primaryKey\": true,\n \"nullable\": false\n }\n }\n }\n }\n}", "targetSchema": "{\n \"tables\": {\n \"users\": {\n \"columns\": {\n \"id\": {\n \"type\": \"INTEGER\",\n \"primaryKey\": true,\n \"nullable\": false\n }\n }\n }\n }\n}", "schemaFormat": "json", "dialect": "sqlite" }

Points clés

Catégorie
Développement et Web
Types d’entrée
textarea, select
Type de sortie
json
Couverture des échantillons
4
API disponible
Yes

Vue d’ensemble

Ce comparateur de schémas analyse deux structures de base de données et génère automatiquement un brouillon de migration SQL. Il identifie les différences de tables, colonnes, index et clés étrangères à partir de DDL SQL ou de descriptions JSON/YAML, en prenant en charge les dialectes PostgreSQL, MySQL et SQLite.

Quand l’utiliser

  • Préparer une migration de base de données entre deux versions d'application
  • Réviser les changements structurels proposés dans une pull request
  • Documenter les modifications de schéma lors d'un refactoring legacy

Comment ça marche

  • Collez le schéma actuel (DDL SQL ou JSON/YAML) dans le champ 'Schema source'
  • Insérez le schéma cible souhaité dans le champ 'Schema cible'
  • Sélectionnez le format (SQL, JSON/YAML ou détection auto) et le dialecte (PostgreSQL, MySQL, SQLite)
  • L'outil génère un résumé des changements et le SQL de migration correspondant

Cas d’usage

Générer des scripts de déploiement pour des mises à jour de schéma
Valider les changements structurels avant application en production
Créer une documentation technique des évolutions de la base de données

Exemples

1. Migration PostgreSQL : ajout d'une colonne email et index

Développeur backend
Contexte
L'équipe décide d'ajouter une adresse email obligatoire aux utilisateurs et d'indexer ce champ pour accélérer les recherches.
Problème
Générer le script SQL ALTER TABLE et CREATE INDEX sans erreur de syntaxe.
Comment l’utiliser
Coller le DDL actuel dans 'Schema source', le DDL cible avec la nouvelle colonne et l'index dans 'Schema cible', puis sélectionner 'SQL DDL' et 'PostgreSQL'.
Configuration d’exemple
{
  "schemaFormat": "sql",
  "dialect": "postgresql"
}
Résultat
Obtention du SQL de migration avec ALTER TABLE pour ajouter la colonne email NOT NULL et CREATE INDEX pour idx_users_email.

2. Refactoring SQLite avec suppression de tables et colonnes

Architecte données
Contexte
Nettoyage d'une base SQLite legacy en supprimant la table audit_logs et la colonne email obsolète de la table users.
Problème
SQLite ne supporte pas DROP COLUMN nativement, il faut reconstruire la table.
Comment l’utiliser
Fournir les schémas JSON source et cible, choisir 'JSON ou YAML' et 'SQLite'.
Résultat
Détection de la suppression de table et colonne, avec alerte spécifique SQLite indiquant la nécessité de reconstruire la table users pour supprimer la colonne email.

Tester avec des échantillons

sql

Hubs associés

FAQ

Quels formats de schéma sont acceptés ?

SQL DDL, JSON et YAML. La détection automatique du format est disponible.

Quels SGBD sont supportés ?

PostgreSQL, MySQL et SQLite, avec détection automatique du dialecte possible.

L'outil détecte-t-il les clés étrangères ?

Oui, il identifie les ajouts, suppressions et modifications d'index et de clés étrangères.

Le SQL généré est-il directement exécutable ?

C'est un brouillon de migration à valider. Certaines opérations comme la suppression de colonnes sous SQLite nécessitent des étapes manuelles.

Puis-je comparer un schéma SQL avec un schéma JSON ?

Non, les deux schémas doivent utiliser le même format pour permettre la comparaison.

Documentation de l'API

Point de terminaison de la requête

POST /fr/api/tools/database-schema-diff

Paramètres de la requête

Nom du paramètre Type Requis Description
sourceSchema textarea Oui -
targetSchema textarea Oui -
schemaFormat select Non -
dialect select Non -

Format de réponse

{
  "key": {...},
  "metadata": {
    "key": "value"
  },
  "error": "Error message (optional)",
  "message": "Notification message (optional)"
}
Données JSON: Données JSON

Documentation de MCP

Ajoutez cet outil à votre configuration de serveur MCP:

{
  "mcpServers": {
    "elysiatools-database-schema-diff": {
      "name": "database-schema-diff",
      "description": "Compare deux schemas et genere un brouillon de migration",
      "baseUrl": "https://elysiatools.com/mcp/sse?toolId=database-schema-diff",
      "command": "",
      "args": [],
      "env": {},
      "isActive": true,
      "type": "sse"
    }
  }
}

Vous pouvez chaîner plusieurs outils, par ex.: `https://elysiatools.com/mcp/sse?toolId=png-to-webp,jpg-to-webp,gif-to-webp`, max 20 outils.

Si vous rencontrez des problèmes, veuillez nous contacter à [email protected]