Hoppa till innehåll
100% lokalt

SQL-schema-diff

Jämför två CREATE TABLE-scheman och generera ALTER TABLE-migreringen mellan dem.

Inmatning
Målschema (CREATE TABLE)

SQL-schema-diff

Klistra in ditt nuvarande schema på vänster sida och det schema du vill nå på höger sida, och det här verktyget skriver migreringen mellan dem. Det jämför CREATE TABLE-satser tabell för tabell och kolumn för kolumn, genererar sedan de CREATE TABLE-, DROP TABLE-, ADD COLUMN-, DROP COLUMN- och ALTER COLUMN-satser som behövs för att förvandla det första schemat till det andra — användbart för att granska en schemaförändring, skriva en migreringsfil för hand eller kontrollera vad en schemagenerator faktiskt gjorde.

Välj en databas från alternativet Databas — PostgreSQL, MySQL eller SQLite — eftersom var och en skriver kolumnförändringar på olika sätt: PostgreSQL använder ALTER COLUMN ... TYPE och SET/DROP NOT NULL, MySQL kombinerar typ och nullability i en enda MODIFY COLUMN-sats, och SQLite har ingen ALTER COLUMN alls, så dessa fall antecknas som needing a table rebuild. Aktivera indexändringar för att också jämföra CREATE INDEX-satser, omslut utmatningen i en transaktion, och slå på återställningsalternativet för en andra, omvänd migrering tillagd under den första.

Att släppa en tabell eller kolumn, minska en typ eller lägga till NOT NULL kan kasta bort data eller misslyckas mot rader som inte passar den nya begränsningen. Med "Varna före dataförlust" aktiverat markeras varje sådan steg i utmatningen så att det är lätt att upptäcka potentiella problem innan du kör något mot en riktig databas. Tabeller som refererar till varandra via en främmande nyckel skapas och släpps i beroendeordning, så skriptet misslyckas inte på en tabell som det behövde först.

Allt körs lokalt i din webbläsare — dina scheman laddas aldrig upp någonstans, så det är säkert att klistra in verkliga tabelldefinitioner från en privat databas. Kopiera migreringen, ladda ned den som en .txt-fil, eller skicka utmatningen tillbaka till inmatningen för att fortsätta förfina den.

FAQ

Vilka SQL-dialekter stöds?
PostgreSQL, MySQL och SQLite. Välj en från databasealternativet — var och en skriver ALTER COLUMN-, index- och citatväxlingssyntax på olika sätt.
Kan det upptäcka ändringar som kan orsaka dataförlust?
Ja. Borttagna tabeller, borttagna kolumner, kolumner förminskade till en mindre typ och kolumner gjorda NOT NULL är alla markerade med en varningskommentar när "Varna före dataförlust" är aktiverat.
Hanterar den främmande nyckelberoenden?
Ja. När en tabell refererar till en annan sorteras CREATE TABLE-satser så att den refererade tabellen kommer först, och DROP TABLE-satser sorteras så att referenserande tabeller släpps före de tabeller de är beroende av.
Vilken SQL-syntax kan det läsa?
Standard CREATE TABLE-satser med skrivna kolumner, NOT NULL, PRIMARY KEY och REFERENCES, plus fristående CREATE INDEX-satser. Satser som den inte känner igen (inserts, other DDL) hoppas över snarare än avvisas.
Laddas mina scheman upp någonstans?
Nej. Att jämföra scheman och generera migreringen körs helt i din webbläsare — ingenting som du klistrar in här skickas till en server.