Synchronizacja bazy MySQL, MSSQL


(arlid) #1

Witajcie. Czyt jets jakiś sposób na synchronizację bazy danych (niekoniecznie całej, wybranych tabel) pomiędzy MySQL a MSSQL? Lub chociaż dokonanie czegoś na wzór importu z MSSQL do MySQL? Jakiś pomysł jak mógłbym tego dokonać?


(Fizyda) #2

Bez dodatkowego trzeciego narzędzia raczej się nie obejdzie. Wątpię by takie mechanizmy któraś z baz miała dostępne.
Jeśli struktura bazy nie jest specyficzna dla któregoś silnika to wystarczyłoby za pomocą trzeciego narzędzia robić select na jednym i input/update na drugim silniku. W przypadku różnicy w typach danych trzeba dokonać odpowiedniej konwersji. Jeśli tabele mają zaimplementowane jakieś dodatkowe mechanizmy jak weryfikacja danych, dodatkowe funkcje, reakcje na zdarzenia to będzie to ciężkie.

Swoją drogą czemu chcesz czegoś takiego dokonać?


(arlid) #3

Rozumiem, że potrzebne d tego byłoby jakieś narzędzie. Swego czasu bawiłem się ODBC (o ile dobrze pamiętam) w konwersję bazy Accessa. Niestety nie wiem, czy tutaj coś podobnego wchodziłoby w grę.

Właściwie synchronizacja byłaby ideałem, ale będzie tez dobrze, jeśli przeniosę bazę z MSSQL na MySQL - znajomy ma autorskie oprogramowanie, które nie będzie już rozwijane i tam jest właśnie baza MSSQL - chciałby to przenieść do weba - sama idea aplikacji nie jets szczególnie trudna i dość łatwo zaimplementować potrzebne mu funkcje w PHP - brakuje jednak danych, a ciężko byłoby to ręcznie przeklepać. Same tabele również nie są zawiłe, właściwie klika relacji, ale to da się złączyć ponownie.

W sumie można by to zrobić poprzez Management i eksport/import do nowej bazy surowych danych, ale może jest łatwiejszy sposób.


(ziggurad) #4

Spróbuj na początek wyeksportować całość do SQLa i zaimportować w MySQL, możliwe że przy nie wielkich poprawkach uda Ci się to zrobić;)


(Fizyda) #5

Jeśli chodzi o jednorazowe przeniesienie danych to sprawa prosta. Zacznij od sprawdzenia czy zadziałają domyślne funkcje importu/eksporty poprzez plik xml, jeśli będą problemy w tedy albo trzeba będzie dodatkowo jakieś wartości skonwertować do odpowiednich formatów dla konretnych typów danych, a w najgorszym przypadku napisać prosty skrypt który przeklepie całą bazę z jednego silnika do drugiego.
Taki skrypt możesz napisać w czymkolwiek, nawet nie potrzebujesz używać jakiś DBALi bo możesz to zrobić łopatologicznie select i instert. Możesz próbować też ODBC, wszystko zależy od tego co jest dla Ciebie wygodniejsze i w czym szybciej to zrobisz.
Gdybym ja to robił to bym pewnie użył PHP i standardowego api do mysql oraz mssql, ale skrypt odpalałbym w konsoli. Plus do tego jakiś output w konsoli by widzieć postęp.


(adam9870) #6

Ja zawsze robię eksport/import do/ z pliku CSV. Jeżeli raz sobie poradzisz z importem, to kolejne razy będzie już z górki i wówczas będziesz mógł oskryptować eksport do pliku CSV / transfer w konkretne miejsce pliku CSV/ import z pliku CSV.


(mr-owl) #7

Witam,

Słowo klucz to Linked Server, więcej znajdziesz pod adresem https://www.packtpub.com/books/content/mysql-linked-server-sql-server-2008. Dalej już wystarczy tylko napisać sobie jakąś procedurę która będzie synchronizowała dane pomiędzy tabelami.

Pozdrawiam,

mr-owl