Sări la conținut

Comparaţie schemă SQL

Comparaţi două scheme CREATE TABLE și generaţi migraţia ALTER TABLE dintre ele.

Intrare
Schemă ţintă (CREATE TABLE)
Ieșire

Comparaţie schemă SQL

Lipiţi schema curentă la stânga și schema pe care doriţi s-o ajungeţi la dreapta, și acest unealtă scrie migraţia dintre ele. Compară declaraţiile CREATE TABLE tabel cu tabel și coloană cu coloană, apoi generează declaraţiile CREATE TABLE, DROP TABLE, ADD COLUMN, DROP COLUMN și ALTER COLUMN necesare pentru a transforma prima schemă în a doua — util pentru a revizui o schimbare de schemă, a scrie un fișier de migraţie manual sau a verifica ce a făcut cu adevărat un instrument de generare de schemă.

Alegeţi o bază de date din opţiunea Baza de date — PostgreSQL, MySQL sau SQLite — deoarece fiecare scrie schimbări de coloane diferit: PostgreSQL folosește ALTER COLUMN ... TYPE și SET/DROP NOT NULL, MySQL combină tipul și nulabilitatea într-o singură declaraţie MODIFY COLUMN, iar SQLite nu are ALTER COLUMN, așa că aceste cazuri sunt notate ca necesitând reconstruire tabel. Includeţi schimbări de indici pentru a compara de asemenea declaraţiile CREATE INDEX, încapsulaţi rezultatul într-o tranzacţie și activaţi opţiunea de revenire pentru o a doua migraţie inversă anexată sub prima.

Eșuarea unei tabele sau coloane, îngustarea unui tip sau adăugarea NOT NULL poate arunca date sau eșua împotriva rândurilor care nu se încadrează în noua constrângere. Cu "Aveziţi despre pierderea de date" activat, fiecare dintre acesti pași este marcat în rezultat așa că este ușor de detectat înainte de a executa orice pe o bază de date reală. Tabelele care se referă una la alta printr-o cheie străină sunt create și eliminate în ordinea dependenţei, așa că scriptul nu eșuează pe o tabelă de care avea nevoie mai întâi.

Totul rulează local în navigatorul dvs. — schemele dvs. nu sunt niciodată trimise nicieri, deci este sigur să lipiţi definiţii reale de tabele dintr-o bază de date privată. Copiaţi migraţia, descărcaţi-o ca fișier .txt sau trimiţi rezultatul înapoi la intrare pentru a continua s-o rafinai.

FAQ

Care dialect SQL sunt suportaţi?
PostgreSQL, MySQL și SQLite. Alegeţi unul din opţiunea Baza de date — fiecare scrie sintaxa ALTER COLUMN, indici și ghilimele diferit.
Poate detecta schimbări care pot pierde date?
Da. Tabelele eliminate, coloanele eliminate, coloanele îngustare la un tip mai mic și coloanele făcute NOT NULL sunt toate marcate cu un comentariu de averiguă atunci când "Aveziţi despre pierderea de date" este activat.
Poate gestiona dependenţele cheii străine?
Da. Când o tabelă face referinţă la alta, declaraţiile CREATE TABLE sunt ordonate așa că tabela refereniată vine prima, și declaraţiile DROP TABLE sunt ordonate așa că tabelele care fac referinţe sunt eliminate înainte de tabelele de care depind.
Ce sintaxă SQL poate citi?
Declaraţii CREATE TABLE standard cu coloane tastate, NOT NULL, PRIMARY KEY și REFERENCES, plus declaraţii CREATE INDEX autonome. Declaraţiile pe care nu le recunosc (inserţii, alt DDL) sunt ignorate mai degrabă decât respinse.
Schemele mele sunt încarcate oriunde?
Nu. Comparaţia schemelor și generarea migraţiei se execută în întregime în navigatorul dvs. — nimic din ce lipiţi aici nu este trimis pe un server.