Vai al contenuto
100% locale

Diff schema SQL

Confronta due schemi CREATE TABLE e genera la migrazione ALTER TABLE tra di loro.

Ingresso
Schema di destinazione (CREATE TABLE)
Uscita

Diff schema SQL

Incolla il tuo schema attuale a sinistra e lo schema che vuoi raggiungere a destra, e questo strumento ti scrive la migrazione tra di loro. Confronta le istruzioni CREATE TABLE tabella per tabella e colonna per colonna, quindi genera le istruzioni CREATE TABLE, DROP TABLE, ADD COLUMN, DROP COLUMN e ALTER COLUMN necessarie per trasformare il primo schema nel secondo — utile per esaminare un cambiamento di schema, scrivere un file di migrazione a mano, o verificare cosa ha effettivamente fatto uno strumento di generazione dello schema.

Scegli un database dall'opzione Database — PostgreSQL, MySQL o SQLite — poiché ognuno scrive i cambiamenti di colonna diversamente: PostgreSQL usa ALTER COLUMN ... TYPE e SET/DROP NOT NULL, MySQL combina il tipo e la nullabilità in un'unica istruzione MODIFY COLUMN, e SQLite non ha ALTER COLUMN affatto, quindi questi casi sono annotati come richiedenti una ricostruzione della tabella. Includi le modifiche agli indici per differenziare anche le istruzioni CREATE INDEX, racchiudi l'output in una transazione, e attiva l'opzione di ripristino per una seconda migrazione inversa aggiunta sotto la prima.

Eliminare una tabella o una colonna, restringere un tipo, o aggiungere NOT NULL può scartare i dati o fallire su righe che non si adattano al nuovo vincolo. Con « Avvisa su perdita di dati » attivato, ogni passaggio di questo tipo è contrassegnato nell'output in modo che sia facile da individuare prima di eseguire qualsiasi cosa su un database reale. Le tabelle che si referenziano reciprocamente tramite una chiave esterna vengono create e eliminate nell'ordine delle dipendenze, quindi lo script non fallisce su una tabella di cui aveva bisogno per primo.

Tutto viene eseguito localmente nel tuo browser — i tuoi schemi non vengono mai caricati da nessuna parte, quindi è sicuro incollare definizioni di tabella reali da un database privato. Copia la migrazione, scaricala come file .txt, o rimanda l'output all'input per continuare a perfezionarlo.

FAQ

Quali dialetti SQL sono supportati?
PostgreSQL, MySQL e SQLite. Scegline uno dall'opzione Database — ognuno scrive la sintassi ALTER COLUMN, gli indici e le citazioni diversamente.
Può rilevare i cambiamenti che potrebbero causare perdita di dati?
Sì. Tabelle eliminate, colonne eliminate, colonne ridotte a un tipo più piccolo e colonne rese NOT NULL sono tutte contrassegnate con un commento di avvertimento quando « Avvisa su perdita di dati » è attivato.
Gestisce le dipendenze delle chiavi esterne?
Sì. Quando una tabella ne referenzia un'altra, le istruzioni CREATE TABLE sono ordinate in modo che la tabella referenziata venga per prima, e le istruzioni DROP TABLE sono ordinate in modo che le tabelle referenzianti vengano eliminate prima delle tabelle da cui dipendono.
Quale sintassi SQL legge?
Istruzioni CREATE TABLE standard con colonne tipate, NOT NULL, PRIMARY KEY e REFERENCES, più istruzioni CREATE INDEX autonome. Le istruzioni che non riconosce (insert, altro DDL) vengono saltate invece che rifiutate.
I miei schemi vengono caricati da qualche parte?
No. Il confronto degli schemi e la generazione della migrazione vengono eseguiti interamente nel tuo browser — nulla di ciò che incolla qui viene inviato a un server.