Przejdź do treści

Porównanie schematów SQL

Porównaj dwa schematy CREATE TABLE i wygeneruj migrację ALTER TABLE między nimi.

Wejście
Docelowy schemat (CREATE TABLE)
Wynik

Porównanie schematów SQL

Wklej obecny schemat po lewej stronie i schemat, który chcesz osiągnąć po prawej, a to narzędzie napisze migrację między nimi. Porównuje instrukcje CREATE TABLE tabela po tabeli i kolumna po kolumnie, a następnie generuje instrukcje CREATE TABLE, DROP TABLE, ADD COLUMN, DROP COLUMN i ALTER COLUMN potrzebne do przekształcenia pierwszego schematu w drugi — przydatne podczas przeglądania zmiany schematu, ręcznego pisania pliku migracji lub sprawdzenia tego, co rzeczywiście zrobiło narzędzie do generowania schematów.

Wybierz bazę danych z opcji Baza danych — PostgreSQL, MySQL lub SQLite — ponieważ każda písze zmiane kolumn inaczej: PostgreSQL używa ALTER COLUMN ... TYPE i SET/DROP NOT NULL, MySQL łączy typ i nullability w jedną instrukcję MODIFY COLUMN, a SQLite w ogóle nie ma ALTER COLUMN, więc te przypadki są oznaczane jako wymagające przebudowy tabeli. Uwzględnij zmiany indeksów, aby także porównywać instrukcje CREATE INDEX, zawiń wyjście w transakcję i włącz opcję cofnięcia dla drugiej migracji w odwrotnej kolejności dołączonej poniżej pierwszej.

Upuszczenie tabeli lub kolumny, zawężenie typu lub dodanie NOT NULL może wyrzucić dane lub nie powieść się dla wierszy, które nie pasują do nowego ograniczenia. Z opcją "Ostrzegaj przed utratą danych" włączoną każdy taki krok jest oznaczony w wynikach, więc łatwo go dostrzec przed uruchomieniem czegokolwiek na rzeczywistej bazie danych. Tabele, które się nawzajem odwołują za pośrednictwem klucza obcego, są tworzone i usuwane w kolejności zależności, więc skrypt nie zawiedzie na tabeli, której potrzebował jako pierwszy.

Wszystko działa lokalnie w Twojej przeglądarce — Twoje schematy nigdy nigdzie nie są wgrywane, więc bezpiecznie jest wklejać rzeczywiste definicje tabel z prywatnej bazy danych. Skopiuj migrację, pobierz ją jako plik .txt lub wyślij wyjście z powrotem do wejścia, aby dalej go udoskonalać.

Częste pytania

Które dialekty SQL są obsługiwane?
PostgreSQL, MySQL i SQLite. Wybierz jeden z opcji Baza danych — każdy pisze składnię ALTER COLUMN, indeksu i cudzysłowów inaczej.
Czy może wykryć zmiany, które mogą spowodować utratę danych?
Tak. Usunięte tabele, usunięte kolumny, kolumny zawężone do mniejszego typu i kolumny uczynione NOT NULL są wszystkie oznaczone ostrzeżeniem w komentarzu, gdy opcja "Ostrzegaj przed utratą danych" jest włączona.
Czy obsługuje zależności kluczy obcych?
Tak. Gdy jedna tabela odnosi się do drugiej, instrukcje CREATE TABLE są uporządkowane tak, aby tabela, do której się odwołujesz, pojawiła się pierwsza, a instrukcje DROP TABLE są uporządkowane tak, aby tabele odwołujące się były usuwane przed tabelami, od których są zależne.
Jaką składnię SQL czyta?
Standardowe instrukcje CREATE TABLE z typizowanymi kolumnami, NOT NULL, PRIMARY KEY i REFERENCES, plus autonomiczne instrukcje CREATE INDEX. Instrukcje, których nie rozpoznaje (inserts, inne DDL), są pomijane zamiast odrzucane.
Czy moje schematy są gdzieś wgrywane?
Nie. Porównywanie schematów i generowanie migracji odbywa się całkowicie w Twojej przeglądarce — nic z tego, co wkleisz tutaj, nie jest wysyłane na serwer.