Waliłem głową, nie SQL Server 2005
pró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!
Odpowiedzi:
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.
źródło
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
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.
źródło
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.
źródło
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.
źródło