FireBirdde Verileriyle Birlikte Tablo Kopyalama
FireBirdde Verileriyle Birlikte Tablo Kopyalama
Merhaba Arkadaşlar
Ramazanınız Mübarek Olsun.
Firebird,İnterbase,Sybase bütün veri tabanı bileşenlerini tek bi dosya içerisinde tutuyor. Paradox gibi her tablo için ayrı ayrı dosyalar halinde değil.
Ben şunu sormak istiyorum :
Firebirde oluşturulan vede veri girişi yapılmış tablolardan istediğimi kendi oluşturduğum gdb dosyasının içerisine kopyalama yapabilir miyim? Bu kopyalamada önemli olan tablodaki verilerin aktarılması.
Çalışmalarınızda Başarılar...
Ramazanınız Mübarek Olsun.
Firebird,İnterbase,Sybase bütün veri tabanı bileşenlerini tek bi dosya içerisinde tutuyor. Paradox gibi her tablo için ayrı ayrı dosyalar halinde değil.
Ben şunu sormak istiyorum :
Firebirde oluşturulan vede veri girişi yapılmış tablolardan istediğimi kendi oluşturduğum gdb dosyasının içerisine kopyalama yapabilir miyim? Bu kopyalamada önemli olan tablodaki verilerin aktarılması.
Çalışmalarınızda Başarılar...
-
- Üye
- Mesajlar: 508
- Kayıt: 30 Oca 2004 10:49
Borland delphi 7 yi kurduğunuzda datapump gelir. ONunla aktarabilirsiniz. Tablo yokda sa o oluşturur. Genelde sorun çıkarmaz. Ya da database workbench de de datapump var. DP ı kullanırken isterseniz bde yi isterseniz odbc kullanırsınız. Paradox ta klasörü gösterirsiniz. Ben genelde odbc yada kendi yazdığım programı kullanıyorum. Ben fb to mysql yazdım. seçtiğiniz tabloları aktarıyor. Tabii fieldlar aynı adda ise. Dikkat etmen gereken nokta db lerin karakter tablosu. Farklı ise karakterlerde sorun olabilir.
DataPump u hiç kullanmadım. tablodan tabloya veri aktarımı gerektiğinde bunu hep kodla hallettim.
Benim kastettiğim:
Paradoxta herhangi bi dolu tabloyu kendi DATA klasörümün altına kopyalayıp gerekli bağlantılarını yapıp kullanıyordum. Tabi verileride tabloyla birlikte geliyor. Firebirde de aynı şekilde tabloyu verileriyle birlikte kopyalamam mümkün mü? Bunu merak ediyorum.
Bunu dönem işlemlerin de kullanmayı düşündüm.
Data2006.gdb nin içindeki TBL_CARI yi Data2007.gdb ye kopyalanabilir mi?
Benim kastettiğim:
Paradoxta herhangi bi dolu tabloyu kendi DATA klasörümün altına kopyalayıp gerekli bağlantılarını yapıp kullanıyordum. Tabi verileride tabloyla birlikte geliyor. Firebirde de aynı şekilde tabloyu verileriyle birlikte kopyalamam mümkün mü? Bunu merak ediyorum.
Bunu dönem işlemlerin de kullanmayı düşündüm.
Data2006.gdb nin içindeki TBL_CARI yi Data2007.gdb ye kopyalanabilir mi?
-
- Üye
- Mesajlar: 508
- Kayıt: 30 Oca 2004 10:49
Arkadaşlar yorumlarınız için teşekkürler.
Tabiki bu copy paste ile olacak bişey değil.
Aklıma gelen: ilk olarak kopyalamak isteğim tabloyu sql ile yeni data dosyamda oluşturmak, tabi trigger gen. ve sp leride aynı şekilde oluşturmak. bundan sonra bi while do döngüsüyle bütün verileri oluşturdum tabloya aktarmak. bu çözüm olur fakat çok uzun bi iş. Ben burda daha pratik bi yol bilen arkadaşlar olabilir diye sordum.
Ben bunun üzerinde biraz daha uğraşayım...
Çalışmalarınızda başarılar...
Tabiki bu copy paste ile olacak bişey değil.
Aklıma gelen: ilk olarak kopyalamak isteğim tabloyu sql ile yeni data dosyamda oluşturmak, tabi trigger gen. ve sp leride aynı şekilde oluşturmak. bundan sonra bi while do döngüsüyle bütün verileri oluşturdum tabloya aktarmak. bu çözüm olur fakat çok uzun bi iş. Ben burda daha pratik bi yol bilen arkadaşlar olabilir diye sordum.
Ben bunun üzerinde biraz daha uğraşayım...
Çalışmalarınızda başarılar...
Eğer FireBird dışında bir VT kullansaydın örneğin MS-SQL bu işlem aynen Copy-Paste kadar kolay bir işlem olacaktı.
BDE kullanmak şartıyla bu işlemi basit SQL komutlarıyla FireBird için de yapabilirsin. Benim buna benzer ihtiyaçlar için hazırladığım bir procedure var. Direk işini görebilir veya gerekirse düzeltmeler yaparak kullanabilirsin. Tabi ki BDE kullanman ilk şart:
İyi çalışmalar.
BDE kullanmak şartıyla bu işlemi basit SQL komutlarıyla FireBird için de yapabilirsin. Benim buna benzer ihtiyaçlar için hazırladığım bir procedure var. Direk işini görebilir veya gerekirse düzeltmeler yaparak kullanabilirsin. Tabi ki BDE kullanman ilk şart:
Kod: Tümünü seç
procedure MyBDETableToInterBaseTable(const aBDETableFileName, aInterBaseDatabaseFileName, aInterBaseTableName, aDummyAliasName: string);
var
MyList: TStringList;
aBDETableName: string;
L: Integer;
begin
aBDETableName := ExtractFileName(aBDETableFileName);
L := Length(ExtractFileExt(aBDETableName));
if L > 0 then aBDETableName := System.Copy(aBDETableName, 1, Length(aBDETableName) - L);
MyList := TStringList.Create;
try
MyList.Add('SERVER NAME=' + aInterBaseDatabaseFileName);
MyList.Add('USER NAME=SYSDBA');
MyList.Add('PASSWORD=masterkey');
Session.DeleteAlias(aDummyAliasName);
Session.AddAlias(aDummyAliasName, 'INTRBASE', MyList);
with TQuery.Create(nil) do
try
DatabaseName := ExtractFilePath(aBDETableFileName);
SessionName := 'Default';
SQL.Text := 'INSERT INTO ":' + aDummyAliasName + ':' + aInterBaseTableName + '" SELECT * FROM ' + aBDETableName;
ExecSQL;
finally
Free;
end;
finally
MyList.Free;
Session.DeleteAlias(aDummyAliasName);
end;
end;
Sevgili Hakan Can çok teşekkürler.
Gönderdiğin kodlar sorduğum olayı açıklar tarzdan. Kodları en kısa zamanda düzenleyip kullanacağım.
Bunu dönem işlemlerinde kullanacağım. Başarılı olursam burdan gerekli açıklamayla kodları göndereceğim.
Şimdiye kadar dönem açıp kapama olayına pek sıcak bakmıyordum. Parçalar halinde data ları tutmak pek kullanışlı gelmiyor. fakat tablodaki veri sayısı artınca ister istemez yavaşlamalar oluyor ve program kullanıcılarımız o kadar büyük firmalar değil. yani öyle bütün verilere göre istatistikler isteyen firmalar değil.
ben paradoxta dönem işlemlerinde yedek alıp yeni dönem yılına gerekli boş tabloları atıyorum ve DATA klasörümde Data_2006, Data_2007 Alt klasörler oluşturuyorum ve bu klasörlerin adreslerini ayarlar tablosunda tutup, Dönem işlemleri penceresinde kullanıcı istediği dönemi varsayılan dönem olarak atıyor ve değişiklikler yapabiliyor. Ben bu mantığı kullanıyorum ve şimdiye kadar bi sıkıntı yaşamadım. bunu aynı şekilde Firebirde uygulamam ne kadar uygun olur bunu deneyip görecegiz.
Burda sizin dönem işlemlerini nasıl hallettiğinizi sormak istiyorum. sizin fikirleriniz çok önemli.
Çalışmalarınızda başarılar....
Gönderdiğin kodlar sorduğum olayı açıklar tarzdan. Kodları en kısa zamanda düzenleyip kullanacağım.
Bunu dönem işlemlerinde kullanacağım. Başarılı olursam burdan gerekli açıklamayla kodları göndereceğim.
Şimdiye kadar dönem açıp kapama olayına pek sıcak bakmıyordum. Parçalar halinde data ları tutmak pek kullanışlı gelmiyor. fakat tablodaki veri sayısı artınca ister istemez yavaşlamalar oluyor ve program kullanıcılarımız o kadar büyük firmalar değil. yani öyle bütün verilere göre istatistikler isteyen firmalar değil.
ben paradoxta dönem işlemlerinde yedek alıp yeni dönem yılına gerekli boş tabloları atıyorum ve DATA klasörümde Data_2006, Data_2007 Alt klasörler oluşturuyorum ve bu klasörlerin adreslerini ayarlar tablosunda tutup, Dönem işlemleri penceresinde kullanıcı istediği dönemi varsayılan dönem olarak atıyor ve değişiklikler yapabiliyor. Ben bu mantığı kullanıyorum ve şimdiye kadar bi sıkıntı yaşamadım. bunu aynı şekilde Firebirde uygulamam ne kadar uygun olur bunu deneyip görecegiz.
Burda sizin dönem işlemlerini nasıl hallettiğinizi sormak istiyorum. sizin fikirleriniz çok önemli.
Çalışmalarınızda başarılar....
Arkadaşlar veri tabanındaki tabloları bütün özellikleri ve verileri ile birlikte sql text olarak tek kodla çıkartabiliyoruz.
IBExtract companenti ile:
yazabileceğiniz parametreler delphi yardımda mevcut.
eoDatabase
eoDomain
eoTable
eoView
eoFunction
eoTrigger
eoForeign
eoChecks
Sıra bunu sqlscript ile oluşturmaya geldi fakat benim companentlerimin arasında ibsqlscripti bulmadım
IBExtract companenti ile:
Kod: Tümünü seç
IBEXTRACT1.ExtractObject(EOTABLE,'TBL_CARI',[etDomain, etTable, etRole, etTrigger, etForeign, etIndex, etData, etGrant, etCheck]);
MEMO1.Text:= IBExtract1.Items.Text;
eoDatabase
eoDomain
eoTable
eoView
eoFunction
eoTrigger
eoForeign
eoChecks
Sıra bunu sqlscript ile oluşturmaya geldi fakat benim companentlerimin arasında ibsqlscripti bulmadım