Přeskočit na obsah

Porovnávač SQL schémat

Porovnejte dva CREATE TABLE schémata a vygenerujte ALTER TABLE migraci mezi nimi.

Vstup
Cílové schéma (CREATE TABLE)
Výstup

Porovnávač SQL schémat

Vložte vaše aktuální schéma vlevo a schéma, které chcete dosáhnout vpravo, a tento nástroj napíše migraci mezi nimi. Porovnává výroky CREATE TABLE tabulku za tabulkou a sloupec za sloupcem, potom generuje výroky CREATE TABLE, DROP TABLE, ADD COLUMN, DROP COLUMN a ALTER COLUMN potřebné k transformaci první schémy do druhé — užitečné při kontrole změny schémy, ručním psaní migračního souboru nebo ověření toho, co skutečně udělal nástroj na generování schémat.

Vyberte si databázi z možnosti Database — PostgreSQL, MySQL nebo SQLite — protože každá píše změny sloupců jinak: PostgreSQL používá ALTER COLUMN ... TYPE a SET/DROP NOT NULL, MySQL kombinuje typ a nulovatelnost do jednoho výroku MODIFY COLUMN, a SQLite vůbec nemá ALTER COLUMN, takže tyto případy jsou označeny jako vyžadující obnovu tabulky. Zahrňte změny indexů také do diff výroků CREATE INDEX, zabalte výstup do transakce a zapněte možnost vrácení se zpět pro druhou migraci v obráceném pořadí připojenou pod první.

Zahozením tabulky nebo sloupce, zúžením typu nebo přidáním NOT NULL lze zahltit data nebo skončit s chybou proti řádkům, které se nezmestí do nového omezení. S možností "Varovat před ztrátou dat" zapnutou je každý takový krok označen v příloze, takže je snadné ho zaznamenat před spuštěním čehokoli proti reálné databázi. Tabulky, které se navzájem odkazují cizím klíčem, se vytváří a odstraňují v pořadí závislostí, takže skript selže na tabulce, kterou potřeboval jako první.

Všechno se spouští lokálně ve vašem prohlížeči — vaše schémata se nikdy nikam nenahrávají, takže je bezpečné vložit skutečné definice tabulek z privátní databáze. Zkopírujte migraci, stáhněte si ji jako soubor .txt nebo pošlete výstup zpět na vstup, abyste jej dále vylepšili.

Časté dotazy

Které dialekty SQL jsou podporovány?
PostgreSQL, MySQL a SQLite. Vyberte si jeden z možnosti Databáze — každý píše syntaxi ALTER COLUMN, indexů a uvozovek jinak.
Dokáže detekovat změny, které by mohly způsobit ztrátu dat?
Ano. Vynechané tabulky, vynechané sloupce, sloupce zúžené na menší typ a sloupce vytvořené NOT NULL jsou všechny označeny varováním v komentáři, když je možnost "Varovat před ztrátou dat" zapnutá.
Ošetřuje závislosti cizích klíčů?
Ano. Když jedna tabulka odkazuje na druhou, výroky CREATE TABLE jsou uspořádány tak, aby se odkazovaná tabulka objevila jako první, a výroky DROP TABLE jsou uspořádány tak, aby se tabulky odkazující smazaly před tabulkami, na kterých jsou závislé.
Jakou SQL syntaxi čte?
Standardní výroky CREATE TABLE s typizovanými sloupci, NOT NULL, PRIMARY KEY a REFERENCES, plus samostatné výroky CREATE INDEX. Výroky, které nepozná (inserts, další DDL), se přeskočí místo aby byly odmítnuty.
Jsou moje schémata někde nahrána?
Ne. Porovnávání schémat a generování migrace běží zcela ve vašem prohlížeči — nic z toho, co sem vložíte, se neposílá na server.