insert into farklı veritabanları aktarımı

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

insert into farklı veritabanları aktarımı

Mesaj gönderen greenegitim »

Kod: Tümünü seç

    Query1.SQL.Text:='Insert into Tablo1 (id, alan1, alan2, alan3, alanX) select ("", alan1, alan2, alan3, alanX) from Tablo2';
    Query1.ExecSQL;
bu mantıkla farklı veri tabanındaki tabloya aktarma işlemini nasıl yapabilirim?
konuyu açmak gerekirse firebird e isler tablom var aynı isler tablosu mysql de de var firebirden mysql e veri aktarımı yapmak istiyorum sql ile varmıdır bir yolu yoksa kayıtları
zquery1aciklama.text:=ibquery1aciklama.text;
gibi tek tekmi göndermem gerekir.
Mücadele güzelleştirir!
Kullanıcı avatarı
unicorn64
Üye
Mesajlar: 919
Kayıt: 04 Nis 2006 08:56
Konum: yine yeniden Ankara ^_^

Re: insert into farklı veritabanları aktarımı

Mesaj gönderen unicorn64 »

farklı veritabanı sistemleri (mysql-firebird) olunca aynı bağlantı nesnesiyle bağlanıp aynı query nesnesiyle işlem yapmaya imkanı yoktur diye düşünüyorum. aynı sistem olsa çözüm var da farklı farklı olunca kaynaktan sorgulayıp döngüyle hedefe aktarmaktan başka çözüm gelmiyor aklıma...
bazen yükselmek için önce dibi görmek gerekir...

forumda soru sormadan önce bakılmalı bence
daha fazlası için...

yürümeyi öğrenmeden koşmaya çalışanlar için, tökezleyip düşmek kaçınılmazdır...

Resim
Kullanıcı avatarı
greenegitim
Üye
Mesajlar: 713
Kayıt: 28 Nis 2011 10:33
Konum: İstanbul

Re: insert into farklı veritabanları aktarımı

Mesaj gönderen greenegitim »

Sanırım kaba kuvvet devam :)
Mücadele güzelleştirir!
Kullanıcı avatarı
aslangeri
Moderator
Mesajlar: 4322
Kayıt: 26 Ara 2003 04:19
Konum: Ankara
İletişim:

Re: insert into farklı veritabanları aktarımı

Mesaj gönderen aslangeri »

s.a.
datapum diye aratırsanınz bu işlemi yapan programlar var. ancak tabloların eşleştirmelerini vs yapmanız lazım.
ayrıca kaynak datanın scriptini oluşturarakda aktarımı yapabilirsiniz. tabi keylere (master ve foreign) dikkat etmek lazım.
kolay gelsin.
Duyduğun Şeylerin Söylediklerim Olduğuna Eminim Ama
Anladığın Şeylerin Anlatmak İstediklerim Olduğuna Emin Değilim
arifcell
Üye
Mesajlar: 7
Kayıt: 23 Eki 2005 01:16
Konum: İstanbul

Re: insert into farklı veritabanları aktarımı

Mesaj gönderen arifcell »

Ornek kod olarak degerlendırebılırsın
ıkı ayrı connectıon kurup
ıkı ayrı sorgu acıp asagıdakı gıbı bır duzenleme ıle calıstırabılırsın.
kolay gelsın.


K_Sorgu1.Close;
K_Sorgu1.SQL.Text:='SELECT SRKODU, KODU, ADI FROM DEPARTMAN WHERE SRKODU='+#39+Sirket.Text+#39;

Application.ProcessMessages;
TRY
K_Sorgu1.Open;
IF K_Sorgu1.RecordCount<>0 THEN
BEGIN
SayacKontrol(NIL);
K_Sorgu1.First;
WHILE NOT K_Sorgu1.Eof DO
BEGIN
Application.ProcessMessages;
IF H_Datatip.Text='Pdks3.0' THEN
BEGIN
H_Sorgu1.Close;
H_Sorgu1.SQL.Text:='INSERT INTO DEPARTMAN '+
'(SRKODU, KODU, ADI) VALUES ('+
#39+K_Sorgu1.Fields[0].AsString+#39+','+
#39+K_Sorgu1.Fields[1].AsString+#39+','+
#39+K_Sorgu1.Fields[2].AsString+#39+');';
END;
IF H_Datatip.Text='PersonelCI' THEN
BEGIN

END;
TRY
H_Sorgu1.ExecSQL;
BILGI.Caption:='DEPARTMAN BILGISI AKTARILIYOR';
Yaz_Guncelle(NIL);

EXCEPT
HataLogYaz(H_Sorgu1);
BILGI.Caption:='DEPARTMAN BILGISI AKTARILAMADI';
Hata_Guncelle(NIL);
END;
Oku_Guncelle(NIL);
K_Sorgu1.Next;
END;
END;
EXCEPT
HataLogYaz(K_Sorgu1);
Application.ProcessMessages;
END;
BILGI.Caption:='DEPARTMAN BILGISI AKTARIM ISLEMI TAMAMLANDI';
SayacTemizle(NIL);
Gül Bahçesine Giren Gül Olur.
Gül Olmasa Bile Gül Kokar.
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: insert into farklı veritabanları aktarımı

Mesaj gönderen denizfatihi »

Merhaba,

Konu ile ilgili olduğu için farklı bir başlık açmak istemedim.
Mssql kullanmakla beraber 2 adet farklı veritanım mevcut
A dan B ye tranfer kısmı tamam yanlız aktarılan veriler şayet daha önce mevcut ise tekrar aktarılmaması adına nasıl bir kontrol eklemem lazım aynı varitabanında olunca aşağıdaki gibi tekrar kaydı engelliyoruz yanlız farklı veritabanında nasıl yapmam gerekiyor.
Konu ile ilgili yardımınızı rica ederim.

Kod: Tümünü seç

WHERE FATREF NOT IN  (select FATREF FROM FATURA)
mkysoft
Kıdemli Üye
Mesajlar: 3103
Kayıt: 26 Ağu 2003 12:35
Konum: Berlin
İletişim:

Re: insert into farklı veritabanları aktarımı

Mesaj gönderen mkysoft »

Farklı yada aynı veri tabanı (üreticisi önemli değil) üzerinde transactional işlem yapmak mümkün:
1- Veritabanları bir birlerine linked olarak bağlanabiliyor ancak bu yöntemi tüm firmalar desteklemiyor. Mesala Oracle <-> MSSQL mümkün.
2- İşletim sistemi seviyesinde transaction objesi kullanılarak farklı veri tabanlarında işlem yapılabiliyor. Bu desteği sağlayan bildiğim veri tabanları: MySQL, Firebird, Oracle, MSSQL. Windows işletim sistemlerinde bu sistem MS DTC Service üzerinden çalışıyor. Teknoloji DTC - distrubited transaction control olarak isimlendiriliyor. Teknik olarak low level seviyede bunu nasıl sağladığını bende merak ediyorum. Sonuç olarak çalışıyor.
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: insert into farklı veritabanları aktarımı

Mesaj gönderen mrmarman »

SQLserver-Oracle bağlantısını tecrübe ettiğim içi onu örnekleyim.

SQLServer üzerine ORACLE için LinkedServer kurup kullanıyorum. SQLServer'a ORACLE erişim şifreleri vs. içeren bir script ile izinler vs. bildirilip bir alias belirleniyor.

Sonra SQLServer sorgularında veritabani.dbo.tabloadi üçlemesi kullanır gibi köşeli parantezle [alias]..database. viewadi vb. şeklinde iki nokta yanyana ile dilersen JOIN ediyorsun dilersen hiç Oracle'a bulaşmadan tüm trafiği sqlserver üstleniyor.

Firebird cephesine gelince. İşte bu örnekteki gibi sqlserver'in içinden firebird erişimi yapılabilir. Araya sanki datasnap mantığı gibi sqlserver Layer koyunca bir sürü veritabanı (tabi server tarafından erişilebilir olması kaydıyla) aynı anda linklenebilir diye düşünüyorum.

Firebird için google taraması ile şunu gördüm.
Resim
Resim ....Resim
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: insert into farklı veritabanları aktarımı

Mesaj gönderen denizfatihi »

Teşekkür ederim.
Köşeli parantez olayı çok imiş, işimi çözdü.

Kod: Tümünü seç

veritabani.dbo.tabloadi
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: insert into farklı veritabanları aktarımı

Mesaj gönderen mrmarman »

Cloud'dan kodlarıma yeniden bir göz gezdirdim, LinkedServer öncesi JOIN ettiğim oracle bağlantım şöyle imiş.

Kod: Tümünü seç

SQL.Add('LEFT JOIN                                                                                                  ');
      SQL.Add('( SELECT * FROM OPENROWSET(                                                                                ');
      SQL.Add(' ''OraOLEDB.Oracle''                                                                                       ');
      SQL.Add(' ''msdaora''                                                                                               ');
      SQL.Add(',''(DESCRIPTION=(CID=GTU_APP)(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=172.16.0.xxx)(PORT=1521)))(CONNECT_DATA=(SID=trtxxx)(SERVER=DEDICATED)))''  ');
      SQL.Add(';''xxxloginadi'                                                                                           ');
      SQL.Add(';''xxxparola''                                                                                            ');
      SQL.Add(',''select * from "PERSONEL"."PRODUKSIYON_VIEW"'' )) PP                                                     ');
      SQL.Add('ON (PP.SICIL_NO = P.P_SicilNo)                         
Sonra bu yapı LinkedServer ile şuna dönmüş

Kod: Tümünü seç

SQL.Add('LEFT JOIN                                                                                                  ');
      SQL.Add('[ORA9]..PERSONEL.PRODUKSIYON_VIEW PP ');
      SQL.Add('ON (PP.SICIL_NO = P.P_SicilNo)' ) ;
      
Firebird ile tek seferlik benzeri bir yapı kullanmak isteyen olursa diye yazdım. OPENROWSET bile günü kurtarabilir.
En son mrmarman tarafından 27 Mar 2015 01:46 tarihinde düzenlendi, toplamda 2 kere düzenlendi.
Resim
Resim ....Resim
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: insert into farklı veritabanları aktarımı

Mesaj gönderen denizfatihi »

Hocam kodlara bakınca tv kanalında çalıştığınız çok belli,
personel ve prodüksiyon kelimeleri
Benim de aynı sorun başımda :)
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: insert into farklı veritabanları aktarımı

Mesaj gönderen mrmarman »

Hocam bir sen bilmiyordun TV kanalında çalıştığımı, kadro tamam :lol:

TRT'deyim
Resim
Resim ....Resim
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: insert into farklı veritabanları aktarımı

Mesaj gönderen denizfatihi »

Beyaztv :)
Kullanıcı avatarı
mrmarman
Üye
Mesajlar: 4740
Kayıt: 09 Ara 2003 08:13
Konum: İstanbul
İletişim:

Re: insert into farklı veritabanları aktarımı

Mesaj gönderen mrmarman »

@brs de orada değil miydi?
Kanal A mıydı yoksa
Resim
Resim ....Resim
denizfatihi
Üye
Mesajlar: 254
Kayıt: 16 Şub 2004 06:12
Konum: istanbul

Re: insert into farklı veritabanları aktarımı

Mesaj gönderen denizfatihi »

Kanal A olması lazım
Cevapla