Ga naar inhoud
100% lokaal

SQL schema diff

Vergelijk twee CREATE TABLE-schema's en genereer de ALTER TABLE-migratie ertussen.

Invoer
Doelschema (CREATE TABLE)
Uitvoer

SQL schema diff

Plak uw huidige schema aan de linkerkant en het schema dat u wilt bereiken aan de rechterkant, en deze tool schrijft de migratie ertussen. Het vergelijkt CREATE TABLE-statements tabel voor tabel en kolom voor kolom, genereert vervolgens de CREATE TABLE-, DROP TABLE-, ADD COLUMN-, DROP COLUMN- en ALTER COLUMN-statements die nodig zijn om het eerste schema in het tweede om te zetten — handig voor het beoordelen van een schemawijziging, het handmatig schrijven van een migratiebestand of het controleren wat een schemagenerator werkelijk heeft gedaan.

Kies een database uit de optie Database — PostgreSQL, MySQL of SQLite — omdat elk kolomwijzigingen anders schrijft: PostgreSQL gebruikt ALTER COLUMN ... TYPE en SET/DROP NOT NULL, MySQL combineert type en nullability in een enkel MODIFY COLUMN-statement, en SQLite heeft helemaal geen ALTER COLUMN, dus die gevallen worden opgemerkt als needing a table rebuild. Schakel Index-wijzigingen in om ook CREATE INDEX-statements te vergelijken, verpak de uitvoer in een transactie, en zet de terugrол-optie aan voor een tweede, omgekeerde migratie onder de eerste.

Het verwijderen van een tabel of kolom, het verkleinen van een type, of het toevoegen van NOT NULL kan gegevens weggooien of mislukken tegen rijen die niet in de nieuwe beperking passen. Met "Waarschuwen voor gegevensverlies" ingeschakeld, wordt elke dergelijke stap in de uitvoer gemarkeerd zodat het gemakkelijk is potentiële problemen te herkennen voordat u iets tegen een echte database uitvoert. Tabellen die naar elkaar verwijzen via een buitenlandse sleutel, worden in afhankelijkheidsvolgorde gemaakt en verwijderd, dus het script mislukt niet op een tabel die het eerst nodig had.

Alles wordt lokaal in uw browser uitgevoerd — uw schema's worden nergens geüpload, dus het is veilig om echte tabeldefinities van een privédatabase in te plakken. Kopieer de migratie, download deze als een .txt-bestand, of stuur de uitvoer terug naar de invoer om het verder aan te scherpen.

FAQ

Welke SQL-dialecten worden ondersteund?
PostgreSQL, MySQL en SQLite. Kies er een uit de optie Database — elk schrijft ALTER COLUMN-, index- en aanhalingssyntaxis anders.
Kan het wijzigingen detecteren die gegevensverlies kunnen veroorzaken?
Ja. Verwijderde tabellen, verwijderde kolommen, kolommen verkleind tot een kleiner type, en kolommen gemaakt NOT NULL zijn allemaal gemarkeerd met een waarschuwingsopmerking wanneer "Waarschuwen voor gegevensverlies" is ingeschakeld.
Behandelt het buitenlandse sleutelafhankelijkheden?
Ja. Wanneer een tabel naar een andere verwijst, worden CREATE TABLE-statements gesorteerd zodat de tabel waarnaar wordt verwezen eerst komt, en DROP TABLE-statements worden gesorteerd zodat verwijzende tabellen vóór de tabellen waarvan ze afhangen worden verwijderd.
Welke SQL-syntaxis kan het lezen?
Standaard CREATE TABLE-statements met getypeerde kolommen, NOT NULL, PRIMARY KEY en REFERENCES, plus standalone CREATE INDEX-statements. Statements die het niet herkent (inserts, other DDL) worden overgeslagen in plaats van afgewezen.
Worden mijn schema's ergens geüpload?
Nee. Het vergelijken van schema's en het genereren van de migratie vindt volledig in uw browser plaats — niets wat u hier plakt wordt naar een server gestuurd.