Перейти до вмісту

Порівняння схем SQL

Порівнюйте дві схеми CREATE TABLE та отримуйте міграцію ALTER TABLE між ними.

Введення
Цільова схема (CREATE TABLE)
Вихід

Порівняння схем SQL

Вставте поточну схему зліва та бажану схему справа — інструмент створить міграцію між ними. Він порівнює CREATE TABLE вирази таблиця за таблицею та колонка за колонкою, потім генерує CREATE TABLE, DROP TABLE, ADD COLUMN, DROP COLUMN та ALTER COLUMN вирази, необхідні для перетворення першої схеми на другу — корисно для перевірки зміни схеми, написання файлу міграції вручну або перевірки того, що зробив інструмент генерації схеми.

Виберіть базу даних з опції Database — PostgreSQL, MySQL або SQLite — оскільки кожна по-різному пише зміни колонок: PostgreSQL використовує ALTER COLUMN ... TYPE та SET/DROP NOT NULL, MySQL об'єднує тип та обов'язковість в один вираз MODIFY COLUMN, а SQLite взагалі не підтримує ALTER COLUMN, тому такі випадки відзначаються як такі, що вимагають перебудови таблиці. Включіть зміни індексів, щоб також порівнювати CREATE INDEX вирази, обгорніть вихід у транзакцію та включіть опцію відкату для другої, зворотної міграції, доданої нижче першої.

Видалення таблиці або колонки, звуження типу або додавання NOT NULL може призвести до втрати даних або конфлікту з існуючими рядками. При включенні "Попереджувати про втрату даних" кожен такий крок відзначається у виході, щоб було легко помітити перед запуском проти реальної бази даних. Таблиці, які посилаються одна на одну через зовнішній ключ, створюються та видаляються в порядку залежностей, тому скрипт не зламається через потрібну йому таблицю.

Усе працює локально у вашому браузері — ваші схеми ніде не завантажуються, тому безпечно вставляти реальні визначення таблиць із приватної бази даних. Скопіюйте міграцію, завантажте її як .txt файл або відправте вихід назад на вхід для подальшої доробки.

FAQ

Які діалекти SQL підтримуються?
PostgreSQL, MySQL та SQLite. Виберіть один з опції Database — кожен пише ALTER COLUMN, індекси та синтаксис лапок по-різному.
Чи може він виявити зміни, які можуть призвести до втрати даних?
Так. Видалені таблиці, видалені колонки, колонки звужені до меншого типу та колонки, які були зроблені NOT NULL, всі позначаються попередженням, коли включена опція "Попереджувати про втрату даних".
Чи обробляє він залежності зовнішніх ключів?
Так. Коли одна таблиця посилається на іншу, CREATE TABLE вирази впорядковуються так, щоб указана таблиця йшла першою, а DROP TABLE вирази впорядковуються так, щоб таблиці, на які посилаються, видалялися перед таблицями, від яких вони залежать.
Який синтаксис SQL він читає?
Стандартні CREATE TABLE вирази з типізованими колонками, NOT NULL, PRIMARY KEY та REFERENCES, плюс окремі CREATE INDEX вирази. Вирази, які інструмент не розпізнає (вставки, інші DDL), пропускаються, а не відхиляються.
Чи завантажуються мої схеми кудись?
Ні. Порівняння схем та генерація міграції працюють повністю у вашому браузері — ніщо з того, що ви вставляєте тут, не відправляється на сервер.