veritabanı update

Firebird ve Interbase veritabanları ve SQL komutlarıyla ilgli sorularınızı sorabilirsiniz. Delphi tarafındaki sorularınızı lütfen Programlama forumunda sorunuz.
Cevapla
rapsodim
Üye
Mesajlar: 147
Kayıt: 15 Eki 2003 03:52

veritabanı update

Mesaj gönderen rapsodim »

sql ile en son guncellem yapılan kayıttan ıtıbaren kayıtlar bır baska database e nasıl aktarılır.mükerrer kayıt olmasın ve sonucunda iki veri tabanı aynı olmalı.ilginize tşkr ederim
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

bu tip sorularda kullandığınız veritabanını belirtmek çok faydalı olacaktır.

1. Veritabanındaki tabloların birebir eşini oluşturduktan sonra, sql ile diğer tarafa aktarabilirsin.

INSERT INTO A_TABLOSU (SELECT * FROM A_TABLOSU@SID WHERE şart)

bu yazım Oracle için. @SID diğer veritabanına bir link.

2. Yol ise, Query ile istediğin kayıtları seçip, diğer veritabanına birebir kopyalaman. Yani : Append - ... - Post.

Kolay gelsin.
rapsodim
Üye
Mesajlar: 147
Kayıt: 15 Eki 2003 03:52

teşekkür ederim

Mesaj gönderen rapsodim »

as/400 sisteminden veriyi SQL ile ilgili alanları indiriyorum.bazı kıstaslar kullanarak.bu alanları dbdemos da olusturdugum *.db database sine aktarıyorum.
while not query1.eof do
begin
table1.insert;
table1.FieldByName('ref').asstring:=query1.FieldByName('itnbr').asstring;
...
table1.Post;
query1.next;
end;
şeklinde fakat ikinci veri al dedegımde table1 ın sonuna tekrar kayıtları sıralı sekılde alıyor benım ıstedıgım son update edılen kayıttan sonrasını table1 alanıma kaydetsın ilginize tşkr ederim
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

o zaman o kayıt var mı kontrol etmen lazım ya da diğer tarafa bir alan ekleyip kaydedilip kaydedilmediğini kontrol etmen lazım.

1. yol da :

if not Table1.Locate (anahtar alana göre) then
Kayıt_ekle

2. yolda : mesela kaydedildi diye bir alan ekleyip, bunu 1 yap. Query'de kayıtları seçerken :

Where kaydedildi<> 1

şeklinde seç.

Kolay gelsin.
rapsodim
Üye
Mesajlar: 147
Kayıt: 15 Eki 2003 03:52

alan cektıgım databasede acmak sorun degıl

Mesaj gönderen rapsodim »

fakat verılerı aldıgım database e verı yazmak yanı 1 gıbı prb. yapıor 20 bın kayıt oldugu ıcın yazmak iyi olmaz.veriyi alırken en son alınan kayıttan sonrakılerı almasını aldırabılırsem cok guzel olur.bu konuda yardımcı olursanız sevınırım
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Mesaj gönderen aslangeri »

Merhaba.
Öncelikle kolay gelsin.
Hedef tablodan en son kaydın ID sini alıp
kaynak tablodan ID si büyük olanları gönderirsin.

Umarım yeterince açık olmuştur.
Yalnız kaynak tablodaki önceden gönderdiğin kayıtlardan birinde değişiklik olduğu zaman onu nasıl gönderirsin? Bu nun için
yeni bir alan ekleyip (mesala gonderildi) o alana verdiğiniz değere göre işlem yaptırabilrsiniz.

Eğer gonderildi 1 ise insert et
2 ise update et
0 ise işlem yapma gibi.

Kaydı güncelledikten sonra gönderildi yi 0 yapman lazım tabi.

Umarım yardımcı olabilmişimdir :?: . İyi çalışmalar.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
Kullanıcı avatarı
mussimsek
Admin
Mesajlar: 7601
Kayıt: 10 Haz 2003 12:26
Konum: İstanbul
İletişim:

Mesaj gönderen mussimsek »

Merhaba,

evet aslangeri'nin dediği gibi, benim de bir önceki mesajımda önerdiğim yol uygun. Bir alan açıp buraya çekilenler için 1 ata. Seçerken 1'den farklı olanları seçtiğin zaman, aktarılan kayıtlar gelmez.

Kolay gelsin.
Cevapla