Veriler SQL Server 2005'ten MySQL'e nasıl aktarılır [kapalı]


88

SQL Server 2005Bir sürü veriyi dışarı çıkarmaya karşı kafamı çarptım . Bana içinde yaklaşık 300 tablo bulunan bir veritabanı verildi ve bunu bir MySQL veritabanına dönüştürmem gerekiyor. İlk çağrım bcp kullanmaktı, ancak ne yazık ki geçerli CSV üretmiyor - dizeler kapsüllenmemiş, bu nedenle içinde virgül bulunan bir dizeye sahip herhangi bir satırla (veya sınırlayıcı olarak ne kullanırsanız kullanın) başa çıkamazsınız. CSV size veri türleri hakkında hiçbir şey söylemediğinden, yine de tüm tablo oluşturma deyimlerini elle yazmam gerekir.

Hem SQL Server'a hem de MySQL'e bağlanabilen bir araç olsaydı daha iyi olurdu, sonra bir kopya yapın. Görünümleri, depolanan prosedürleri, tetikleyiciyi vb. Kaybedersiniz, ancak yalnızca temel türleri kullanan bir tabloyu bir DB'den diğerine kopyalamak zor değildir ... değil mi?

Böyle bir alet bilen var mı? Tamsayı, kayan nokta, tarih saat ve dizeyi desteklediği sürece, kaç varsayım yaptığı veya ne gibi basitleştirmeler olduğu umurumda değil. Yine de çok fazla budama, normalleştirme vb. Yapmam gerekiyor, bu yüzden anahtarları, ilişkileri veya benzeri şeyleri saklamayı umursamıyorum, ancak ilk veri setine hızlı bir şekilde ihtiyacım var!


1
Birkaç kişinin MSSQL2MySQL'i başarıyla kullandığını duydum , ancak bunun için kendime kefil olamıyorum.
Greg Hurlman

1
SQLYob'un bunu yapabildiğini duydum. < webyog.com/en > burada: < searchsqlserver.techtarget.com/tip/… >
borjab

Bu araç tam olarak istediğiniz şeydir: Tam Dönüştürme Kurumsal . Doğru, görünümleri, prosedürleri ve tetikleyicileri kaybedersiniz, ancak büyük tablolar için son derece optimize edilmiştir. Tüm nesneleri (prosedürler vb.) Çeviren
Damir Bulic


1
@borjab: SQLyog, eski sürümlerde ODBC ile çalışıyordu ama artık çalışmıyor, bu yüzden bu iş için bir seçenek değil.
BlaM

Yanıtlar:


59

Bulduğum en iyi yol MySQL tarafından sağlanan MySQL Taşıma Araç Seti . Bazı büyük göç projeleri için başarıyla kullandım.


2
+1 - Artık EOL ve MySQL Workbench bir geçiş eklentisi içerecek (eski sürüm 5.2), ancak şimdilik şu bağlantıyı kullanın: dev.mysql.com/downloads/gui-tools/5.0.html
Mark Robinson

DATE veya DATETIME sütunlarını dönüştürmek istemiyor :(
Robert Ivanc

1
Not: Şu anda, MySQL Migration Toolkit Linux için mevcut değildir ( dev.mysql.com/doc/migration-toolkit/en/… adresinden )
mkirk

1
My SQL Migration Toolkit'in JDK 5 güncelleme 8'in 32 bit sürümünü gerektirdiğini unutmayın (ver 5 olmalı, sürüm 6 çalışmayacaktır), buradan indirebilirsiniz: tinyurl.com/5snd6y3
casterle

9

MSSQL Management Studio'yu kullanarak MySQL OLE DB ile tabloların geçişini yaptım. Veritabanınıza sağ tıklayın ve "Görevler-> Verileri Dışa Aktar" seçeneğine gidin, buradan bir MsSQL OLE DB kaynağı, MySQL OLE DB kaynağı belirleyebilir ve iki veri kaynağı arasında sütun eşleştirmeleri oluşturabilirsiniz.

Büyük olasılıkla veritabanı ve tabloları önceden MySQL hedefinde kurmak isteyeceksiniz (dışa aktarma, tabloları otomatik olarak oluşturmak isteyecektir, ancak bu genellikle başarısızlıkla sonuçlanır). Veritabanına sağ tıklayarak "Görevler-> Komut Dosyası Oluştur" u kullanarak MySQL'de tabloları hızlı bir şekilde oluşturabilirsiniz. Oluşturma komut dosyalarınız oluşturulduktan sonra, MSSQL'den MYSQL'e kadar olan anahtar kelimeleri ve türleri araştırmanız ve aramanız / değiştirmeniz gerekir.

Elbette veritabanını normal şekilde yedekleyebilir ve MSSQL yedeklemesini MYSQL'e geri yükleyecek bir yardımcı program bulabilirsiniz. Ancak var olup olmadığından emin değilim.


9

SQL Server 2005 "Standart", "Geliştirici" ve "Kuruluş" sürümleri var SSIS SQL sunucusundan DTS yerini, 2000 SSIS olan kendi DB bağlantısı dahili ve başkasının için yazılmış olduğu bir bağlantı bulabilirsiniz MySQL. Buraya bir örnek. Bağlantılarınızı aldıktan sonra, verileri ikisi arasında taşıyan bir SSIS paketi oluşturabilmelisiniz.

Verileri SQLServer'dan MySQL'e taşımak zorunda değilim, ancak MySQL bağlantısı kurulduktan sonra iki SQLServer DB arasında veri taşımakla aynı şekilde çalıştığını hayal ediyorum ki bu oldukça basittir.


8

Şemayı bir DB'den diğerine otomatik olarak kopyalamanın iyi bir yolu olup olmadığından emin olmasam da kendi PHP çözümünüzü kullanmak kesinlikle işe yarayacaktır (belki de bu sizin sorunuzdu).

Yalnızca verileri kopyalıyorsanız ve / veya iki DB arasında değiştirilmiş şemalar arasında dönüştürme yapmak için özel bir koda ihtiyacınız varsa, PHP 5.2+ ve PDO kitaplıklarını kullanmanızı tavsiye ederim. PDO ODBC (ve MSSQL sürücülerini) kullanarak bağlanabileceksiniz. Diğer kitaplıkları kullanarak MSSQL'den PHP'ye geniş metin alanları ve çok baytlı karakterler almakta birçok sorun yaşadım.


6

Denenecek başka bir araç da SQLMaestro paketidir . Kesin aracı çivilemek biraz zordur, ancak hem ücretsiz hem de satın alınabilir, birden çok veritabanı platformu için çok çeşitli görevleri yerine getiren çeşitli araçlara sahiptir. İhtiyacınız olan uygun "içe aktarma" aracına sahip olacağına inandığım için, önce MySQL için Veri Sihirbazı aracını denemenizi öneririm.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.