Bir projemde MSSQL'den MySQL'e geçmek zorunda kalmam üzerine, internette çeşitli aramalar yaptım. Bu dönüşümü yapan bir çok program, script buldum. Programların bulabildiğim hepsi lisanslıydı, benim de verecek param yoktu. Ücretsiz olarak dağıtılan scriptlerin bazılarını ben çalıştıramadım, bazıları kendisi çalışmadı, bazıları da işimi görmedi. Bunun üzerine ASP'de kendim bir script oluşturdum ve ücretsiz olarak dağıtıyorum.
Bu yazımda sizlere scriptin çalışma mantığından bahsedeceğim ve en altta indirebilmeniz için bir link bırakacağım.
Öncelikle kullanıcıdan kaynak (Mssql) sunucu ve hedef (Mysql) sunucunun bilgilerini bir form yardımıyla alıyoruz. Aynı işlemi dosya düzenleme yoluyla da yapabilirlerdi ancak bu şekilde daha kolay olacağını düşündüm.
Akabinde bağlantı cümleciklerini oluşturuyorum.
Bir sonraki aşama ise kaynak veritabanındaki tüm tabloları listelemek oluyor.
|
|
Tablolarımızı yazdırdıktan sonra tüm tabloları işleme sokabilmek için for döngüsüne alıyoruz.
|
|
Kodların anlatımında dıştan içe yöntem kullandım. Kabuk kabuk anlatıyorum. Bu nedenle yukarıdaki kodda döngüyü başlattım ve bitirdim.
Şimdi tablonun sütun sayısına göre bir döngü oluşturacağız. Bu döngü içinde Mysql'de tablomuzu ve sütunlarını oluşturacağız.
|
|
Bu noktada birkaç bilgilendirme yapayım. Bu döngü içerisinde sütunun ismini, veri tipini ve gerekirse uzunluğunu alacağız.
Sütunun ismi:
|
|
|
|
|
|
|
|
Veri tipleri ile ilgili bilgilendirmeler:
Mssql'deki BIT yani True/False veri tipini tinyint(1) olarak kaydediyorum. Normalde Mysql'de bu işlem ENUM ile yapılıyor. Fakat ENUM'a çevirdiğimiz zaman ASP dosyalarımızdaki bağlantı cümleciklerinde köklü değişiklikler yapmamız gerekecek.
Normal bağlantı cümleciğimiz şu şekilde:
|
|
Geriye kalan kodlarımıza devam edebiliriz. Şimdi tablomuzu ve sütunlarımızı oluşturacağız. Bununla ilgili bilgilendirmeleri kodun içinde yapacağım.
|
|
Ve böylelikle veritabanımızı oluşturmuş bulunuyoruz. Sütun tipleri ile ilgili problemleri olanlar olabilir, hemen belirtiyim; veritabanı konusunda çok çok iyi bir bilgiye sahip olduğumu söyleyemem. Bu kodlar ile kendi veritabanımı sorunsuz olarak oluşturdum. Eğer sizin veritabanınız düzgün bir biçimde aktarılmıyorsa ve yeterli bilgiye sahip değilseniz iletişime geçerseniz elimden geldiğince yardımcı olmaya çalışırım.
Artık sıra geldi verilerimizi aktarmaya!
Yukarıda olduğu gibi kodun içinde neyi ne amaçla yaptığımı anlatacağım.
|
|
Kodlarımın açıklaması bu kadar. Mantığı kavradıysanız eğer siz de farklı yollardan bu işe yarayan bir script yazabilirsiniz.
Kendi veritabanımı taşıdım demiştim, işte veritabanımın bilgileri:
19 tablo, 20,318 kayıt. Eksiksiz aktarım.
Bir not, mssql sunucunuz ve mysql sunucunuz aynı bilgisayar üzerinde olursa script timeout vermez. Eğer Local'de çalışırsanız tadından yenmez :)
önceki yazı C# "Bass" ses kütüphanesi - giriş |
sonraki yazı Huzurlarınızda as3Writer |
mySQL'de de bit türünde veritipi bulunuyor tinyint veya enum ile uğraşmanıza gerek yok. SQL cümlesinde true veya false ifadelerini kabul eden bir alandır kendisi. Ayrıca mySQL bit alanını recordsete yüklediğinizde asp ile mantıksal sınamaya asp'nin kendi deyimleriyle alabilirsiniz. (yani aspdeki true ve false deyimleri) bu veri uygunluğu (boolean) asp tarafından otomatik olarak sağlanıyor.
Mysql'deki bit türünün mssql'deki türle eşdeğer olduğunu bilmiyordum. Daha doğrusu ASPdeki sorgulamayla eşdeğer olduğunu bilmiyordum. Mysql'de bir kere bit türünü kullanmıştım fakat çözememiştim ne olduğunu. Yazımda da belirttiğim gibi, veritabanlarına çok hakim değilim. Scriptte güncelleme yaparım, bu veri türünü Bit olarak kaydetmesini sağlarım. Teşekkürler.
2. linkte verdiğiniz oldukça güzel. index, precision, scale gibi öğeleri de dikkate almış. ayrıca dönüşüm tiplerini de oldukça geniş tutmuş. çalıştırırken ne hatası aldınız acaba?
Açıkçası çalıştıramadım, visual basic bilgim yok. Bu dönem dersini almaya başladık. Dersi veren öğretim görevlisine dosyayı gönderdim, oda çalıştıramadığını söyledi. Keşke gerekli ayarları textboxlar şeklinde isteyen bir exe haline getirselermiş. Kullanımı çok daha kolay olurdu.
Herkese dönüşüm ikinci linkteki dosyayı öneriyorum, ASP bilgisini geliştirmek isteyenlere de kendi scriptimi öneriyorum. Tabii ki basit bir veritabanını benim yazdığım script ile de dönüştürebilirsiniz. En azından ben denedim çalıştırdım kendi scriptimi :)
Çeşitli veritabanı türlerinden mySQL'e geçiş için, mySQL'in kendi aracı var. mySQL Migration Toolkit aracı, diğer veritabanlarını verileri ile birlikte otomatik olarak mySQL'e dönüştürebiliyor.
pillinetwork sitelerine yorum ekleyebilmek ve daha fazlası için, üye olun ya da giriş yapın.
Nokta ve pilli ortak yapımı olan kodaman.org hep birlikte içerik üretip gelirini yazarları ile paylaştığımız kolektif bir kod yazarları blogudur. Siz de katılabilirsiniz.