Jak wyeksportować dane z SQL Server 2005 do MySQL [zamknięte]

86

Waliłem głową, nie SQL Server 2005próbując wydobyć wielu danych. Otrzymałem bazę danych zawierającą prawie 300 tabel i muszę przekształcić ją w bazę danych MySQL. Moim pierwszym wywołaniem było użycie bcp, ale niestety nie daje to prawidłowego CSV - ciągi nie są hermetyzowane, więc nie możesz poradzić sobie z żadnym wierszem zawierającym ciąg z przecinkiem (lub cokolwiek, czego używasz jako separatora) i nadal musiałbym ręcznie pisać wszystkie instrukcje tworzenia tabeli, ponieważ oczywiście CSV nie mówi nic o typach danych.

Byłoby lepiej, gdyby istniało narzędzie, które może łączyć się zarówno z SQL Server, jak i MySQL, a następnie wykonać kopię. Tracisz widoki, procedury składowane, wyzwalacz itp., Ale nie jest trudno skopiować tabelę, która używa tylko typów podstawowych z jednej bazy danych do drugiej ... prawda?

Czy ktoś zna takie narzędzie? Nie mam nic przeciwko, ile przyjmuje założeń ani jakie uproszczenia występują, o ile obsługuje liczby całkowite, zmiennoprzecinkowe, datetime i string. W każdym razie muszę dużo przycinać, normalizować itp., Więc nie obchodzi mnie przechowywanie kluczy, powiązań lub czegokolwiek w tym rodzaju, ale potrzebuję szybkiego zestawu danych!

Mata
źródło
1
Słyszałem, że kilka osób z powodzeniem używa MSSQL2MySQL , ale sam nie mogę za to ręczyć.
Greg Hurlman
1
Słyszałem, że SQLYob to potrafi. < webyog.com/en > tutaj: < searchsqlserver.techtarget.com/tip/… >
borjab,
To narzędzie jest dokładnie tym, o co prosiłeś: Full Convert Enterprise . To prawda, że ​​tracisz widoki, procedury i wyzwalacze, ale jest to wysoce zoptymalizowane pod kątem dużych tabel. Innym (droższym) rozwiązaniem, które tłumaczy wszystkie obiekty (procedury itp.) Jest SqlTran SQL Server na MySQL
Damir Bulic
1
Podobna odpowiedź tutaj: stackoverflow.com/questions/11619177/…
Jacob
1
@borjab: SQLyog pracował z ODBC w starszych wersjach, ale już nie działa, więc nie jest to opcja dla tego zadania.
BlaM

Odpowiedzi:

59

Najlepszym sposobem, jaki znalazłem, jest MySQL Migration Toolkit dostarczony przez MySQL. Używałem go z powodzeniem w niektórych dużych projektach migracyjnych.

Nick Berardi
źródło
2
+1 - to teraz EOL, a MySQL Workbench będzie zawierał wtyczkę migracyjną (poprzednia wersja 5.2), ale na razie użyj następującego linku: dev.mysql.com/downloads/gui-tools/5.0.html
Mark Robinson
nie chce konwertować kolumn DATA ani DATETIME :(
Robert Ivanc,
1
Uwaga: obecnie MySQL Migration Toolkit nie jest dostępny dla systemu Linux (od dev.mysql.com/doc/migration-toolkit/en/… )
mkirk
1
Zauważ, że My SQL Migration Toolkit wymaga 32-bitowej wersji JDK 5 z aktualizacją 8 lub nowszą (musi być wersja 5, wersja 6 nie będzie działać), którą możesz pobrać tutaj: tinyurl.com/5snd6y3
casterle
9

Korzystając z MSSQL Management Studio przeniosłem tabele z MySQL OLE DB. Kliknij prawym przyciskiem myszy swoją bazę danych i przejdź do "Zadania-> Eksportuj dane", gdzie możesz określić źródło MsSQL OLE DB, źródło MySQL OLE DB i utworzyć mapowania kolumn między dwoma źródłami danych.

Najprawdopodobniej będziesz chciał wcześniej skonfigurować bazę danych i tabele w miejscu docelowym MySQL (eksport będzie chciał utworzyć tabele automatycznie, ale często kończy się to niepowodzeniem). Możesz szybko utworzyć tabele w MySQL za pomocą "Zadania-> Generuj skrypty", klikając prawym przyciskiem myszy bazę danych. Po wygenerowaniu skryptów do tworzenia musisz przejść i wyszukać / zamienić słowa kluczowe i typy, które istnieją w MSSQL na MYSQL.

Oczywiście możesz również w normalny sposób wykonać kopię zapasową bazy danych i znaleźć narzędzie, które przywróci kopię zapasową MSSQL na MYSQL. Nie jestem jednak pewien, czy taki istnieje.


źródło
9

SQL Server 2005 „Standard”, „Developer” i „Enterprise” mają SSIS , które zastąpiło DTS z SQL Server 2000. SSIS ma wbudowane połączenie z własną bazą danych i można znaleźć połączenie, dla którego napisał ktoś inny MySQL. Oto jeden przykład. Po uzyskaniu połączeń powinieneś być w stanie utworzyć pakiet SSIS, który przenosi dane między nimi.

Nie musiałbym przenosić danych z SQLServer do MySQL, ale wyobrażam sobie, że po zainstalowaniu połączenia MySQL działa to tak samo, jak przenoszenie danych między dwiema bazami danych SQLServer, co jest dość proste.

Sean
źródło
8

Rolling własnego rozwiązania PHP z pewnością zadziała, chociaż nie jestem pewien, czy istnieje dobry sposób na automatyczne kopiowanie schematu z jednej bazy danych do drugiej (może to było twoje pytanie).

Jeśli tylko kopiujesz dane i / lub potrzebujesz niestandardowego kodu do konwersji między zmodyfikowanymi schematami między dwiema bazami danych, polecam użycie PHP 5.2+ i bibliotek PDO. Będziesz mógł łączyć się za pomocą PDO ODBC (i używać sterowników MSSQL). Miałem wiele problemów z pobieraniem dużych pól tekstowych i wielobajtowych znaków z MSSQL do PHP przy użyciu innych bibliotek.

pix0r
źródło
6

Innym narzędziem do wypróbowania byłby pakiet SQLMaestro . Ustalenie precyzyjnego narzędzia jest trochę trudne, ale mają one różnorodne narzędzia, zarówno bezpłatne, jak i do kupienia, które obsługują szeroką gamę zadań na wielu platformach baz danych. Sugerowałbym najpierw wypróbowanie narzędzia Kreator danych dla MySQL, ponieważ uważam, że będzie ono miało odpowiednie narzędzie do importowania, którego potrzebujesz.

Dillie-O
źródło