Aller au contenu

Diff de schéma SQL

Comparez deux schémas CREATE TABLE et générez la migration ALTER TABLE entre eux.

Entrée
Schéma cible (CREATE TABLE)
Sortie

Diff de schéma SQL

Collez votre schéma actuel à gauche et le schéma que vous voulez atteindre à droite, et cet outil vous écrit la migration entre eux. Il compare les déclarations CREATE TABLE tableau par tableau et colonne par colonne, puis génère les déclarations CREATE TABLE, DROP TABLE, ADD COLUMN, DROP COLUMN et ALTER COLUMN nécessaires pour transformer le premier schéma en second — utile pour examiner un changement de schéma, écrire un fichier de migration à la main, ou vérifier ce qu'a réellement fait un outil de génération de schéma.

Choisissez une base de données parmi l'option Base de données — PostgreSQL, MySQL ou SQLite — car chacun écrit les changements de colonne différemment : PostgreSQL utilise ALTER COLUMN ... TYPE et SET/DROP NOT NULL, MySQL combine le type et la nullabilité en une seule déclaration MODIFY COLUMN, et SQLite n'a pas ALTER COLUMN du tout, donc ces cas sont notés comme nécessitant une reconstruction de table. Incluez les changements d'index pour aussi différencier les déclarations CREATE INDEX, enveloppez la sortie dans une transaction, et activez l'option de restauration pour une deuxième migration inverse ajoutée sous la première.

Supprimer une table ou une colonne, rétrécir un type, ou ajouter NOT NULL peut supprimer des données ou échouer contre les lignes qui ne correspondent pas à la nouvelle contrainte. Avec « Avertir sur la perte de données » activé, chaque étape de ce type est marquée dans la sortie pour qu'il soit facile de la repérer avant d'exécuter quoi que ce soit sur une vraie base de données. Les tables qui se référencent mutuellement via une clé étrangère sont créées et supprimées dans l'ordre des dépendances, donc le script ne s'interrompt pas sur une table dont il avait besoin en premier.

Tout s'exécute localement dans votre navigateur — vos schémas ne sont jamais téléchargés nulle part, il est donc sûr de coller les vraies définitions de table d'une base de données privée. Copiez la migration, téléchargez-la en tant que fichier .txt, ou envoyez la sortie vers l'entrée pour la peaufiner davantage.

FAQ

Quels dialectes SQL sont pris en charge ?
PostgreSQL, MySQL et SQLite. Choisissez l'un dans l'option Base de données — chacun écrit la syntaxe ALTER COLUMN, les index et les guillemets différemment.
Peut-il détecter les changements qui pourraient perdre des données ?
Oui. Les tables supprimées, les colonnes supprimées, les colonnes réduites à un type plus petit, et les colonnes rendues NOT NULL sont toutes marquées avec un commentaire d'avertissement lorsque « Avertir sur la perte de données » est activé.
Gère-t-il les dépendances de clés étrangères ?
Oui. Quand une table en référence une autre, les déclarations CREATE TABLE sont ordonnées pour que la table référencée vienne d'abord, et les déclarations DROP TABLE sont ordonnées pour que les tables de référencement soient supprimées avant les tables dont elles dépendent.
Quelle syntaxe SQL lit-il ?
Déclarations CREATE TABLE standard avec colonnes typées, NOT NULL, PRIMARY KEY et REFERENCES, plus des déclarations CREATE INDEX autonomes. Les déclarations qu'il ne reconnaît pas (inserts, autre DDL) sont ignorées plutôt que rejetées.
Mes schémas sont-ils téléchargés quelque part ?
Non. La comparaison des schémas et la génération de la migration s'exécutent entièrement dans votre navigateur — rien de ce que vous collez ici n'est envoyé à un serveur.