Postgresql - no sütun boyutunu değiştirmek
Gerçekten büyük bir masa ALTER TABLE
komut (yaklaşık 30 milyon satır) ile ilgili bir sorum var.
Sütunlarından biri varchar(255)
ve varchar(40)
boyutlandırmak istiyorum.
Temel olarak, aşağıdaki komutu çalıştırarak köşemi değiştirmek istiyorum:
ALTER TABLE mytable ALTER COLUMN mycolumn TYPE varchar(40);
Eğer işlem çok uzun değilse sorun yok ama benim tablo ALTER TABLE komutu sırasında daha okunaklı yok gibi görünüyor. Daha akıllı bir yolu var mı? Belki de yeni bir sütun ekleyin, eski sütundaki değerleri kopyalamak, eski sütun bırakın ve nihayet yeni bir adlandırma?
Herhangi bir ipucu büyük takdir edilecektir! Şimdiden teşekkürler
Not: PostgreSQL 9.0 kullanıyorum.
CEVAP
Resize a column in a PostgreSQL table without changing data bunun nasıl bir açıklaması var. Veritabanı Katalog verileri kesmek için. Bu resmen yapmanın tek yolu TABLOYU DEĞİŞTİRMEK, ve sizin de belirttiğiniz gibi bu değişiklik, kilit ve çalışırken tüm tabloyu yeniden.
Bu değiştirmeden önce dokümanlar Character Types bölümünü okuyun emin olun. Burada farkında olmak garip durumlarda her türlü. Uzunluğu kontrol değerleri satırlara saklı olduğunda yapılır. Orada bir alt sınır hack, varolan değerler boyutunu hiç azaltmaz. Tüm tablo üzerinde bir tarama alanının uzunluğu ^ olduğu satırlar görünümlü yapmak akıllıca olur . 40 karakter değişimi yaptıktan sonra. Bulursun bir yolunu bulmalısın kesecek şekilde el ile--çok bazı kilitler sadece büyük boy olanlar-çünkü eğer biri çalışır güncelleme gibi bir şey bu satır olacak reddetmek gibi çok büyük şimdi, bu noktada gidiyor saklamak için yeni sürümü satır. Neşe kullanıcı için gelişir.
VARCHAR PostgreSQL sadece SQL standardının ilgili korkunç bölümü uymak için var olan korkunç bir türüdür. Eğer çoklu veritabanı uyumluluk umurunda olsa, METİN gibi veri depolama düşünün ve sınırları için bir kısıtlama Ekle uzunluğu. Bu tablo olmadan değiştirebilirsiniz kısıtlamaları/sorun yeniden kilidi ve daha fazlası bütünlüğü zayıf uzunluğu kontrol daha kontrol yapabilirler.
postgresql - metin alanı içinde bir di...
kontrol etmek mümkün değildir ya da po...
Büyük bir tabloda VARCHAR sütun boyutu...
nasıl bir fiyat indirimi görüntü boyut...
Visual Studio'da yazı tipi boyutunu de...