İçeriğe atla
%100 yerel

SQL şema karşılaştırması

İki CREATE TABLE şemasını karşılaştırın ve aralarındaki ALTER TABLE göçünü oluşturun.

Giriş
Hedef şeması (CREATE TABLE)
Çıkış

SQL şema karşılaştırması

Geçerli şemanızı sol tarafa, ulaşmak istediğiniz şemayı sağ tarafa yapıştırın ve bu araç aralarındaki göçü yazacak. CREATE TABLE deyimlerini tablo ve sütun bazında karşılaştırır, ardından ilk şemayı ikinciye dönüştürmek için gereken CREATE TABLE, DROP TABLE, ADD COLUMN, DROP COLUMN ve ALTER COLUMN deyimlerini oluşturur — şema değişikliğini gözden geçirmek, taşıma dosyasını elle yazmak veya şema oluşturma aracının ne yaptığını kontrol etmek için kullanışlıdır.

Veritabanı seçeneğinden bir veritabanı seçin — PostgreSQL, MySQL veya SQLite — çünkü her biri sütun değişikliklerini farklı şekilde yazar: PostgreSQL ALTER COLUMN ... TYPE ve SET/DROP NOT NULL kullanır, MySQL bunu bir MODIFY COLUMN deyimine birleştirir ve SQLite'ın hiç ALTER COLUMN'u yoktur, bu nedenle bu durumlar tablo yeniden oluşturma gerekçesi olarak not edilir. İndeks değişikliklerini ekle seçeneğini açın ve CREATE INDEX deyimlerinin farkını almak için, çıktıyı bir işlemde sarıkla ve ikinci, ters göç için geri alma seçeneğini açın.

Bir tabeloyu veya sütunu bırakmak, bir türü daraltmak veya NOT NULL eklemek veri kaybedebilir veya yeni kısıtlamaya sığmayan satırlar içeren satırlarla başarısız olabilir. "Veri kaybı uyarısı" açık olduğunda, her ilgili adım çıktıda işaretlenir ve gerçek veritabanında çalıştırmadan önce kolayca bulunabilir. Bir tablonun diğerini yabancı anahtar aracılığıyla referans verdiği durumlarda, CREATE TABLE deyimleri bağımlılık sırasına göre sıralanır, bu nedenle betik gerekli bir tabeloda başarısız olmaz.

Her şey yerel olarak tarayıcınızda çalışır — şemalarınız hiçbir yere yüklenmez, bu nedenle özel bir veritabanından gerçek tablo tanımlarını yapıştırmak güvenlidir. Göçü kopyalayın, .txt dosyası olarak indirin veya daha fazla iyileştirmek için çıktıyı geri girmek için gönderiniz.

FAQ

Hangi SQL lehçeleri destekleniyor?
PostgreSQL, MySQL ve SQLite. Veritabanı seçeneğinden birini seçin — her biri ALTER COLUMN, dizin ve alıntılama söz dizimini farklı şekilde yazar.
Veri kaybına neden olabilecek değişiklikleri algılayabiliyor mu?
Evet. Bırakılan tablolar, bırakılan sütunlar, daha küçük bir türe daraltılan sütunlar ve NOT NULL yapılan sütunlar, "Veri kaybı uyarısı" açık olduğunda uyarı yorum olarak işaretlenir.
Yabancı anahtar bağımlılıklarını ele alıyor mu?
Evet. Bir tablo diğerini referans verdiğinde, CREATE TABLE deyimleri referans verilen tablonun önce gelmesi için sıralanır ve DROP TABLE deyimleri, başvuran tablolar bağlı oldukları tablolardan önce bırakılacak şekilde sıralanır.
Hangi SQL söz dizimini okur?
Yazılan sütunlar, NOT NULL, PRIMARY KEY ve REFERENCES içeren standart CREATE TABLE deyimleri, ayrıca bağımsız CREATE INDEX deyimleri. Tanımadığı deyimler (ekler, diğer DDL) reddedilmek yerine atlanır.
Şemalarım bir yere yükleniyorum mu?
Hayır. Şemaları karşılaştırma ve göçü oluşturma tamamen tarayıcınızda çalışır — buraya yapıştırdığınız hiçbir şey bir sunucuya gönderilmez.