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 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 yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

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...!

trooper bunu yazdı Edit: Hocam sylemiş 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 dene bakalım :) https://www.youtube.com/watch?v=mLJyj86ZUgM eski bir video olmasına karşı 4 dk 3. dk dan itibaren 2 sql nasıl sync halde çalışıyo grebilirsin sorgu dnüşlerini grebilirsin ZzZzZzZ...!

devlop eyvallah hocam teşekkürler :) 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 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 yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

Edit: Hocam sylemiş 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 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 yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

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

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

Şimdi orada constrait tanımlanmışsa ona gre 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 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 from tablo1, H, J). Lafın kısası ya kısıtlamaları kaldırıp sonra alter ile ekleyeceksin ya da yukarıdaki yntemi 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!

select yaptığım yeri değiştirmen gerekiyor. Daha doğrusu kodu execute etmen gerekiyor. Aşağıda yeni kodu paylaştım. bold olan yerleri editledim. Orjinal postuda değiştiriyorum. Kusura bakma dediğim gibi iş arasında yazdım dalgınlıkla unutmuşum :) DECLARE C_CURSOR CURSOR LOCAL FOR SELECT name FROM sys. tables DECLARE @TABLO_ADI VARCHAR(1024) DECLARE @SQL VARCHAR(1024) OPEN C_CURSOR FETCH NEXT FROM C_CURSOR INTO @TABLO_ADI WHILE @@FETCH_STATUS = 0 BEGIN SET @SQL = 'EXEC sp_rename ' + @TABLO_ADI + ', ' + LOWER --SELECT exec SET @SQL = NULL FETCH NEXT FROM C_CURSOR INTO @TABLO_ADI END CLOSE C_CURSOR DEALLOCATE C_CURSOR GO _DevLop_ tarafından 27/Mar/17 12:04 tarihinde düzenlenmiştir 'A' Developer is a good starter and a good finisher as well

Navicat ile dataları atıyorum fakat Şyle bir sorun var MSSQL de veritabanı isimleri büyük harfli iken Myssql de tolowercase şeklinde. Yani MSSQL de tablo adı KullaniciBilgileri iken MYSQL de kullanicibilgileri olduğundan hatalı atıyor.. MSSQL deki tablo isimlerinin hepsini ToLowerCase yapmam gerekiyor bunun için bi yol arıyorum şuan 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 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 yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

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 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 yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

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 . 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 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 yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

_DevLop_ bunu yazdı select yaptığım yeri değiştirmen gerekiyor. Daha doğrusu kodu execute etmen gerekiyor. Aşağıda yeni kodu paylaştım. bold olan yerleri editledim. Orjinal postuda değiştiriyorum. Kusura bakma dediğim gibi iş arasında yazdım dalgınlıkla unutmuşum :) DECLARE C_CURSOR CURSOR LOCAL FOR SELECT name FROM sys. tables DECLARE @TABLO_ADI VARCHAR(1024) DECLARE @SQL VARCHAR(1024) OPEN C_CURSOR FETCH NEXT FROM C_CURSOR INTO @TABLO_ADI WHILE @@FETCH_STATUS = 0 BEGIN SET @SQL = 'EXEC sp_rename ' + @TABLO_ADI + ', ' + LOWER --SELECT exec SET @SQL = NULL FETCH NEXT FROM C_CURSOR INTO @TABLO_ADI END CLOSE C_CURSOR DEALLOCATE C_CURSOR GO Hocam sen muhteşem bir detaysın :) Edit : I'lar i olması gerekirken ı oluyor hocam VT de ı harfi nasıl olur? Edit 2: Koda şyle bir ekleme yaptım ama ilerde patlak verir mi ki? ET @SQL = 'EXEC sp_rename ' + @TABLO_ADI + ', ' + REPLACE(LOWER ,'ı','i') bir tane function yazdım her yerde lazım olur diye.. onu kullan. Sorguyu editledim.. SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO if exists (select from dbo. sysobjects where id = object_id and xtype in drop function . GO CREATE FUNCTION . (@DEGER VARCHAR(1024)) RETURNS VARCHAR(1024) AS BEGIN --DECLARE @DEGER VARCHAR(1024) SET @DEGER = replace(replace(replace(REPLACE(REPLACE , 'ş', 's'), 'ü', 'u'), 'ğ', 'g'), 'ç', 'c') RETURN @DEGER END GO DECLARE C_CURSOR CURSOR LOCAL FOR SELECT name FROM sys. tables DECLARE @TABLO_ADI VARCHAR(1024) DECLARE @SQL VARCHAR(1024) OPEN C_CURSOR FETCH NEXT FROM C_CURSOR INTO @TABLO_ADI WHILE @@FETCH_STATUS = 0 BEGIN SET @TABLO_ADI = dbo. F_GLOBAL_DILE_CEVIR SET @SQL = 'EXEC sp_rename ' + @TABLO_ADI + ', ' + LOWER --SELECT exec SET @SQL = NULL FETCH NEXT FROM C_CURSOR INTO @TABLO_ADI END CLOSE C_CURSOR DEALLOCATE C_CURSOR GO 'A' Developer is a good starter and a good finisher as well

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 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 yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

Edit: Hocam sylemiş 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...!

Deneyeyim hocam 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 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 yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

Sorunu şu şekilde çzmeye calıstım.. develop hocamın verdiği kod ile ilk nce tablo adlarını küçük yaptım.. daha sonra NAVİCAT ile DB yi datatransfer seneceğinden bir başka DB ye insert ettim. Geliştirmiş olduğun DB haliyle tablo alanları vs daha fazla oldugundan.. Bir sorgu ile Geliştirmiş olduğum VT'nin Column Name Data Type Data Lenght vs.. gibi zelliklerini bir şema halinde cıkarıp.. Insert ettiğim db de bu alanlar yoksa tabloyu güncelliyorum.. Sorun şuan pek gzükmüyor. Bu işlem süreci biraz uzadı bilgisizlikten olsa gerek.. Ben bu şekilde çzdüm ilerde aynı sorunu yaşayacak olan hocaları çaya davet ediyorum,:D Anlatırız hallederiz hoca dert etme :D 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 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 yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

Navicat ile dataları atıyorum fakat Şyle bir sorun var MSSQL de veritabanı isimleri büyük harfli iken Myssql de tolowercase şeklinde. Yani MSSQL de tablo adı KullaniciBilgileri iken MYSQL de kullanicibilgileri olduğundan hatalı atıyor.. MSSQL deki tablo isimlerinin hepsini ToLowerCase yapmam gerekiyor bunun için bi yol arıyorum şuan Bu kod işini grür diye düşünüyorum. İş arasında test etmeden yazdım bi kontrol edersin.. DECLARE C_CURSOR CURSOR LOCAL FOR SELECT name FROM sys. tables DECLARE @TABLO_ADI VARCHAR(1024) DECLARE @SQL VARCHAR(1024) OPEN C_CURSOR FETCH NEXT FROM C_CURSOR INTO @TABLO_ADI WHILE @@FETCH_STATUS = 0 BEGIN SET @SQL = 'EXEC sp_rename ' + @TABLO_ADI + ', ' + LOWER --SELECT exec SET @SQL = NULL FETCH NEXT FROM C_CURSOR INTO @TABLO_ADI END CLOSE C_CURSOR DEALLOCATE C_CURSOR GO _DevLop_ tarafından 27/Mar/17 12:04 tarihinde düzenlenmiştir 'A' Developer is a good starter and a good finisher as well

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 ) ERROR MESSAGE : 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 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 yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!

select yaptığım yeri değiştirmen gerekiyor. Daha doğrusu kodu execute etmen gerekiyor. Aşağıda yeni kodu paylaştım. bold olan yerleri editledim. Orjinal postuda değiştiriyorum. Kusura bakma dediğim gibi iş arasında yazdım dalgınlıkla unutmuşum :) DECLARE C_CURSOR CURSOR LOCAL FOR SELECT name FROM sys. tables DECLARE @TABLO_ADI VARCHAR(1024) DECLARE @SQL VARCHAR(1024) OPEN C_CURSOR FETCH NEXT FROM C_CURSOR INTO @TABLO_ADI WHILE @@FETCH_STATUS = 0 BEGIN SET @SQL = 'EXEC sp_rename ' + @TABLO_ADI + ', ' + LOWER --SELECT exec SET @SQL = NULL FETCH NEXT FROM C_CURSOR INTO @TABLO_ADI END CLOSE C_CURSOR DEALLOCATE C_CURSOR GO Hocam sen muhteşem bir detaysın :) Edit : I'lar i olması gerekirken ı oluyor hocam VT de ı harfi nasıl olur? Edit 2: Koda şyle bir ekleme yaptım ama ilerde patlak verir mi ki? ET @SQL = 'EXEC sp_rename ' + @TABLO_ADI + ', ' + REPLACE(LOWER ,'ı','i') MhmdAlmz tarafından 27/Mar/17 13:03 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 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 yola koymadı mı? Seni bir yoksul iken zengin etmedi mi? yle ise, sakın yetime kahretme ! El açıp isteyeni de azarlama! Fakat Rabbinin nimetini anlat da anlat!