folder Tahribat.com Forumları
linefolder Database - Veritabanı
linefolder Veritabanlarından Veri Çekip Bir Başka Veritabanına Yazma



Veritabanlarından Veri Çekip Bir Başka Veritabanına Yazma

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Merhaba mürit ve mürideler,

    Şöyle bir sorunum var. Benim bir adet MSSQL Server'im mevcut. ve bu MSSQL deki verileri Mysql'e atmam gerekiyor. Tablo isimleri aynı . Column isimleri aynı.. herşey aynı ..

    MSSQL deki dataları komple alıp MYSQL deki veritabanına atmam gerekiyor şu programı kullandım EasyFrom.ESF.Database.Migration.Toolkit.Pro.v8.2.07 fakat bunda verilerimin sadece %10-15 i falan geliyor diğerleri hep eksik.

    Bende düşündüm Oturup kendi toolumu yazayım dedim.. VT Ye bağlanıp o VT de bulunan verileri Transaction ile ekleyeyim dedim.. Fakat şöyle bir sorunum var..

    Örneğin Kullanıcılar Tablosunda KullanıcıID Auto Increment Haliyle sildiğim datalar arada boşluk yaratıyor Yani ID ler 1-2-3-50-51-66 gibi falan yani.. Ben şimdi bunu Mysql'e insert ettiğimde Auto increment alanlara veri yazamıyorum haliyle. Ve bütün ilişkilerim ölüyor..

    Bunun önüne nasıl geçebilirim ? Yardımcı olacak biri var mıdır ?

    Esenle kalın


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nick6
    0x656e
    0x656e's avatar
    Kayıt Tarihi: 19/Mayıs/2012
    Erkek

    Auto Increment kısımlar zaten Auto Increment'dir o kısımları neden alıyorsun ? 

  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek
    0x656e bunu yazdı

    Auto Increment kısımlar zaten Auto Increment'dir o kısımları neden alıyorsun ? 

    ID işte hocam onlar ilişkili alanlar yani


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek

    Şimdi orada constrait tanımlanmışsa ona göre davranman lazım. Foreign Key seni etkilememeli. İlişkili kaç tablo var?

    Kısaca şöyle anlatayım:

    İlk tablodaki ilişki kuran id gibi foreign anahtarları yeniden oluşturacaksın. Bu da şu şekilde olur (tablo1 ve tablo2)

    ilk sorgu := insert into tablo1 x, y, z values (A, B, C)

    ikinci sorgu := insert into tablo2 t, w, k values (last_insert_id(), W, K)

    gerekirse üçüncü tablonun sorgusu şu şekilde olmalı:

    üçüncü sorgu := insert into tablo3 g, h, j values (select Max(A) from tablo1, H, J).

     

    Lafın kısası ya kısıtlamaları kaldırıp sonra alter ile ekleyeceksin ya da yukarıdaki yöntemi uygulayacaksın. Dikkat etmen gereken nokta her anlamlı veriyi tek seferde girmen, tüm tabloyu değil.

    YeniHarman tarafından 25/Mar/17 20:42 tarihinde düzenlenmiştir

    Olaylara karışmayın!
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    YeniHarman , Abi düşündüm onların alayını evet iyi LastInsert ID dersem de bütün ilişkileri sanki yeni eklenmiş gibi ekleyebilirim..

    Fakat şöyle ki. Ilişkiler çok karmaşık.. Yaklaşık 270 adet Tablo var ve 1 tablo 20-30 tane tablo ile ilişkili olabiliyor..

    Yani KullanıcıID , KitapID var , Yazar ID Var (Bir Kitabı birden çok yazarı bir yazarın birden cok kitabı var). diyelim 

    Bu bile en basitinden.. Gidip ilk önce Kullanıcı eklicen

    Bunu bir değişkene atıcaksın.

    Yazar'ları ekleyeceksin.

    Kitapları ekleyeceksin..

    Peki ya çok'a çok ilişkilerde nasıl olacak ? 

    :'((((((((((((((((((((((((((((((((((

    Bunlar bile başlı başına bir mantık yada program yazmak gibi.. 1 tane sorguyu yanlış yazsam bütün ilişkiler alt üst. 

    Ama son dediğin biraz daha mantıklı gibi.. Verileri ekledikten sonra O alanları gidip güncellemek daha mantıklı.. Tek bir VT Olsa datayı dışarıya alıp tablo alanlarını veya sorguları güncelleyip bütün sorguları tekrardan yazabilirim. Ama birçok database var yaklaşık 50 Database ve 270-280 tablo var.

    Çok'a Çok ilişkilerin bile kendi içerisinde ilişkileri mevcut..


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    YeniHarman
    YeniHarman's avatar
    Kayıt Tarihi: 17/Haziran/2012
    Erkek

    O zaman mevcut sistemi taklit edeceksin. Yapacak bir şey yok:) Örneğin sisteme önce kitap kategorileri, alt kategorileri, yazar, sonra yazarın kitabı(ları), daha sonra satın alanların listesi... gibi girilir. Aynı yoldan yürümen lazım.


    Olaylara karışmayın!
  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Abi öyle olduğunu varsayalım..

    Her tabloda 10k veri olduğunu düşün.. (Normalde bazı tablolarda 800k data var)

    10.000x250 = 2.500.000 Query eder.. Bide Burda Select sorgusu olacak ... Çünkü 1 VT den alıp digerine ekleyeceğim

    Ettimi 5 Milyon Query ..

    Transaction Kurtarmaz bunu.. Çünkü LastInsertID alıyoruz sürekli.. Eş zamanlı çalışması lazım Querylerin.

    Yani Kod'la olacak bir iş değilim sanırım bu..

    Benim bir şekilde MSSQL de aldığım Veritabanı cıktısını komple MySQL Sorgusuna çevirmem lazım. 

    Regex Script'leri falan aradım da gene yemedi.. Başka yollar lazım yani abi Query'ler ile zaman sorunu cıkacak çünkü


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    trooper
    trooper's avatar
    Kayıt Tarihi: 11/Kasım/2007
    Erkek
    MhmdAlmz bunu yazdı

    Merhaba mürit ve mürideler,

    Şöyle bir sorunum var. Benim bir adet MSSQL Server'im mevcut. ve bu MSSQL deki verileri Mysql'e atmam gerekiyor. Tablo isimleri aynı . Column isimleri aynı.. herşey aynı ..

    MSSQL deki dataları komple alıp MYSQL deki veritabanına atmam gerekiyor şu programı kullandım EasyFrom.ESF.Database.Migration.Toolkit.Pro.v8.2.07 fakat bunda verilerimin sadece %10-15 i falan geliyor diğerleri hep eksik.

    Bende düşündüm Oturup kendi toolumu yazayım dedim.. VT Ye bağlanıp o VT de bulunan verileri Transaction ile ekleyeyim dedim.. Fakat şöyle bir sorunum var..

    Örneğin Kullanıcılar Tablosunda KullanıcıID Auto Increment Haliyle sildiğim datalar arada boşluk yaratıyor Yani ID ler 1-2-3-50-51-66 gibi falan yani.. Ben şimdi bunu Mysql'e insert ettiğimde Auto increment alanlara veri yazamıyorum haliyle. Ve bütün ilişkilerim ölüyor..

    Bunun önüne nasıl geçebilirim ? Yardımcı olacak biri var mıdır ?

    Esenle kalın

    Cross sql replication dusunuyosun galiba link bunu dene direk 2 farkli sql i farkli platformlarda olsa bile replication islemi yapar

    edit:link güncelleme

    trooper tarafından 25/Mar/17 22:23 tarihinde düzenlenmiştir

    ZzZzZzZ...!
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek

    Bi çözüm buldum ama şöyle bir sıkıntım var MSSQL de VT alanında bulunan time(7) alanında bir hata alıyorum..

    Yani MSSQL de time(7) olan alan MYSQL de time(6) olması gerekiyor

    DROP TABLE IF EXISTS `expressions`;
    CREATE TABLE `expressions` (
    `idx`  bigint NOT NULL ,
    `date`  datetime NULL ,
    `code`  varchar(80) NULL ,
    `dropid`  varchar(80) NULL ,
    `queue`  varchar(80) NULL ,
    `expression`  varchar(80) NULL ,
    `userid`  bigint NULL ,
    `number`  varchar(80) NULL ,
    `status`  varchar(45) NULL ,
    `duration`  time(7) NULL ,
    `sec`  time(7) NULL ,
    `recording`  varchar(255) NULL ,
    `isdownload`  tinyint NULL ,
    `type`  varchar(30) NULL ,
    `insert`  tinyint NULL ,
    `update`  tinyint NULL ,
    `IsActive`  tinyint NULL ,
    PRIMARY KEY (`idx`)
    )

    ERROR MESSAGE : [Err] 1426 - Too big precision 7 specified for 'duration'. Maximum is 6.

    duration time(6) olması gerekiyor normalde. ama 7 olduğundan hata alıyoruz

    Bunu da çözer isem sorunum çözülecek.
    Şunu çözdükten sonra burda paylaşırım 

    EDİT ; Tropper, hocam link bozuk 

    MhmdAlmz tarafından 25/Mar/17 22:13 tarihinde düzenlenmiştir

    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
  10. KısayolKısayol reportŞikayet pmÖzel Mesaj
    trooper
    trooper's avatar
    Kayıt Tarihi: 11/Kasım/2007
    Erkek

    Edit: Hocam söylemiş olduğum yazılım ücretsiz ve açık kaynak

    https://www.symmetricds.org/

    Bu ürün ile cross platform replication yaparsın.

     

    trooper tarafından 25/Mar/17 22:22 tarihinde düzenlenmiştir

    ZzZzZzZ...!
  11. KısayolKısayol reportŞikayet pmÖzel Mesaj
    MhmdAlmz
    MhmdAlmz's avatar
    Kayıt Tarihi: 09/Ağustos/2015
    Erkek
    trooper bunu yazdı

    Edit: Hocam söylemiş olduğum yazılım ücretsiz ve açık kaynak

    https://www.symmetricds.org/

    Bu ürün ile cross platform replication yaparsın.

     

    Deneyeyim hocam onu da bir şunu çözemez isem


    Andolsun kuşluk vaktine ve dindiği zaman o geceye ki, Rabbin sana veda etmedi ve darılmadı! Ve kesinlikle senin için sonu önünden (ahiret dünyadan) daha hayırlıdır. ileride Rabbin sana verecek de hoşnut olacaksın! O, seni bir yetim iken barındırmadı mı? Seni, yol bilmez iken (doğru) yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? Öyle ise, sakın yetime kahretme (onu horlama)! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!
Toplam Hit: 1774 Toplam Mesaj: 20
veritabanı