Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Firebird - İçinde veri olan bir alanın tipini değiştirme
#1
Merhabalar,
IBExpert ile Firebird veritabanı kullanarak bir tablo oluşturdum. Fakat bu tabloda sayısal olması gereken bir alanı yanlışlıkla Varchar yapmıştım. Şimdi ise bu tablo içerisindeki verileri silmeden field tipini değiştirmek istiyorum. Bu mümkün müdür?
İyi çalışmalar.
Cevapla
#2
(07-06-2020, Saat: 13:08)habikus Adlı Kullanıcıdan Alıntı: Merhabalar,
IBExpert ile Firebird veritabanı kullanarak bir tablo oluşturdum. Fakat bu tabloda sayısal olması gereken bir alanı yanlışlıkla Varchar yapmıştım. Şimdi ise bu tablo içerisindeki verileri silmeden field tipini değiştirmek istiyorum. Bu mümkün müdür?
İyi çalışmalar.

Merhabalar,

Öncelikle yedeğinizi alın.
FB hiç kullanmadığım için bir kaç önerim olacak.

1. Yeni bir field ekleyin. (Sayısal alan). Eski field verilerini buraya kopyalayın.
    Sorunları görüp ona göre hareket edin.

2. Eğer Varchar alan içerisinde noktalama işaretleri kayıtlı değil ise (. veya , )
    Alter komutu ile alanın tipini değiştirebilirsiniz.
ALTER TABLE TABLOADINIZ ALTER COLUMN KOLONADINIZ TYPE integer

Umarım faydalı olur.

Kolay gelsin.
Amaç, bilginin de/aklın da zekat'ını vermek.
Cevapla
#3
@hi_selamlar çok güzel bir öneri ile taçlandırmış.

Şöyle bir kötü haberim var ama siz yine de yedek alıp denemenizi yapın. 

Bu linkte hangi veri tiplerinin hangi(leri)ne dönüşebildiği tablosu verilmiş. Aman ha mevcut fieldi @hi_selamlar dediği gibi yeni bir sayısal alana aktarmadan denemeyin. 

Yanılma payını hesaba katıp deneyiminizi burada paylaşırsanız hepimize faydalı olacaktır.
Saygılarımla
Muharrem ARMAN

guplouajuixjzfm15eqb.gif


Cevapla
#4
Yardımlarınız doğrultusunda, aşağıda olduğu gibi yeni bir alan oluşturdum verileri o alana aktardım. 
Allah razı olsun.

// 1.ADIM : YENİ BİR ALAN OLUŞTUR  
 try   
 sqltext:='Alter Table IRSALIYE add '+'YENI_ALAN'+' DOUBLE PRECISION';
 FDQuery2.Close;
 FDQuery2.SQL.Clear;
 FDQuery2.SQL.Text :=sqltext;
 FDQuery2.ExecSQL;      
 except  
 end; 
 
 FDQuery2.Close;
 FDQuery2.SQL.Clear;
 FDQuery2.SQL.Text:='select * from IRSALIYE';   
 FDQuery2.Active:=TRUE;
 
 // 2.ADIM : BÜTÜTÜN VERİLERİ ESKİ ALANDAN YENİŞ ALANA AKTAR
 FDQuery2.Open;
 FDQuery2.FIRST;
 WHILE NOT FDQuery2.EOF DO
       BEGIN
       FDQuery2.Edit;
       FDQuery2.FieldByName('YENI_ALAN').AsString:=FDQuery2.FieldByName('EVRAKNO').AsString;
       FDQuery2.Post;            
       FDQuery2.Next;
       END;
       
 // 3.ADIM : ESKİ ALANI SİL
 try   
 sqltext:='Alter Table IRSALIYE Drop EVRAKNO';         
 FDQuery2.Close;
 FDQuery2.SQL.Clear;
 FDQuery2.SQL.Text :=sqltext;
 FDQuery2.ExecSQL;      
 except  
 end; 
 
 // 4.ADIM : YENİ ALANIN ADINI ESKİ ALANI ADIYLA DEĞİŞTİR
 try   
 sqltext:='Alter Table IRSALIYE Alter Column YENI_ALAN to EVRAKNO';        
 FDQuery2.Close;
 FDQuery2.SQL.Clear;
 FDQuery2.SQL.Text :=sqltext;
 FDQuery2.ExecSQL;      
 except  
 end;
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  Veri Tabanına Kayıt Yaparken Yazdırma bünyamin68 6 93 4 saat önce
Son Yorum: mustafaozpinar
  Farklı alanları olan array tuna 6 348 12-01-2021, Saat: 20:23
Son Yorum: tuna
  Aynı anda 10.000 farklı cihazdan veri alışverişi yapma. pro_imaj 23 1.360 27-12-2020, Saat: 11:22
Son Yorum: pro_imaj
  Listview içinde arada dilo 5 2.371 23-12-2020, Saat: 17:09
Son Yorum: Jakarta2
  Problem - ZKTeco Cihazlardan Anlık Veri Alma mad85 14 2.101 18-12-2020, Saat: 17:34
Son Yorum: engerex



Konuyu Okuyanlar: 1 Ziyaretçi