Mam plik .sql ze zrzutu MySQL zawierający tabele, definicje i dane do wstawienia w tych tabelach. Jak mogę przekonwertować tę bazę danych przedstawioną w pliku zrzutu na bazę danych MS SQL Server?
mysql
sql-server
mysqldump
marionmaiden
źródło
źródło
Odpowiedzi:
Użyj Asystenta migracji programu SQL Server (SSMA)
Oprócz MySQL obsługuje Oracle, Sybase i MS Access.
Wydaje się być całkiem sprytny i zdolny do obsługi nawet nietrywialnych transferów. Ma również interfejs wiersza poleceń (oprócz GUI), więc teoretycznie można go zintegrować z jakimś procesem ładowania wsadowego.
To aktualne łącze do pobrania wersji MySQL https://www.microsoft.com/en-us/download/details.aspx?id=54257
Obecna (z czerwca 2016 r.) Stabilna wersja 6.0.1 ulega awarii z obecnym (5.3.6) sterownikiem MySQL ODBC podczas przesyłania danych. Wszystko w wersji 64-bitowej. Wersja 5.3 ze sterownikiem ODBC 5.1.13 działa dobrze.
źródło
Sugeruję użycie mysqldump w następujący sposób:
mysqldump --compatible=mssql
phpMyAdmin nadal jest aplikacją internetową i może mieć pewne ograniczenia dla dużych baz danych (czas wykonywania skryptu, przydzielana pamięć i tak dalej).
źródło
Znalazłem na to sposób w sieci
Wymaga to trochę pracy, bo trzeba to zrobić stół po stole. W każdym razie mógłbym skopiować tabele, dane i ograniczenia do bazy danych MS SQL.
Tutaj jest link
http://www.codeproject.com/KB/database/migrate-mysql-to-mssql.aspx
źródło
Jeśli wykonujesz eksport za pomocą PhpMyAdmin , możesz zmienić tryb zgodności sql na „MSSQL”. W ten sposób po prostu uruchom wyeksportowany skrypt w bazie danych MS SQL i gotowe.
Jeśli nie możesz lub nie chcesz używać PhpMyAdmin, w mysqldump jest również opcja zgodności , ale osobiście wolałbym, aby PhpMyAdmin zrobił to za mnie.
źródło
Oto moje podejście do importowania plików .sql do MS SQL:
Eksportuj tabelę z MySQL z opcjami
--compatible=mssql
i--extended-insert=FALSE
:mysqldump -u [username] -p --compatible=mssql --extended-insert=FALSE db_name table_name > table_backup.sql
Podziel wyeksportowany plik za pomocą programu PowerShell o 300000 linii na plik:
$i=0; Get-Content exported.sql -ReadCount 300000 | %{$i++; $_ | Out-File out_$i.sql}
Uruchom każdy plik w MS SQL Server Management Studio
Istnieje kilka wskazówek, jak przyspieszyć wkładki .
Innym podejściem jest użycie
–where
opcji mysqldump . Korzystając z tej opcji, możesz podzielić tabelę na dowolny warunek, który jest obsługiwany przezwhere
klauzulę sql.źródło
--databases [db_name]
słowo kluczowe, jak wyjaśniono w tej odpowiedzi: stackoverflow.com/a/26096339/155687Miałem dzisiaj bardzo podobny problem - musiałem skopiować dużą tabelę (5 milionów wierszy) z MySql do MS SQL.
Oto kroki, które wykonałem (w systemie Ubuntu Linux):
Utworzono tabelę w MS SQL, której struktura odpowiada tabeli źródłowej w MySql.
Zainstalowany wiersz poleceń MS SQL: https://docs.microsoft.com/en-us/sql/linux/sql-server-linux-setup-tools#ubuntu
Zrzucona tabela z MySql do pliku:
W moim przypadku plik zrzutu był dość duży, więc postanowiłem podzielić go na kilka małych części (po 1000 wierszy) -
split --lines=1000 "$FILENAME" part-
W końcu przejrzałem te małe pliki, dokonałem kilku podmian tekstu i wykonałem fragmenty jeden po drugim na serwerze MS SQL:
Oczywiście trzeba wymienić moje zmienne jak
$AZURE_SERVER
,$TABLE
itp z naszą.Mam nadzieję, że to pomoże.
źródło
U mnie najlepiej było wyeksportować wszystkie dane za pomocą tego polecenia:
mysqldump -u USERNAME -p --all-databases --complete-insert --extended-insert=FALSE --compatible=mssql > backup.sql
--extended-insert = FALSE jest potrzebne, aby uniknąć limitu importu wierszy mssql 1000.
Utworzyłem tabele za pomocą narzędzia do migracji, więc nie jestem pewien, czy funkcja CREATE z pliku backup.sql zadziała.
W SSMS MSSQL musiałem zaimportować tabelę danych po tabeli z IDENTITY_INSERT ON, aby zapisać pola ID:
SET IDENTITY_INSERT dbo.app_warehouse ON; GO INSERT INTO "app_warehouse" ("id", "Name", "Standort", "Laenge", "Breite", "Notiz") VALUES (1,'01','Bremen',250,120,''); SET IDENTITY_INSERT dbo.app_warehouse OFF; GO
Jeśli masz relacje, musisz najpierw zaimportować dziecko, a następnie tabelę z kluczem obcym.
źródło
Możesz także użyć „ODBC” + „Kreator importu i eksportu SQL Server”. Opisuje to poniższy link: https://www.mssqltips.com/sqlservertutorial/2205/mysql-to-sql-server-data-migration/
źródło
Biegać:
mysqldump -u root -p your_target_DB --compatible=mssql > MSSQL_Compatible_Data.sql
Czy chcesz zobaczyć pasek postępu?
pv mysqldump -u root -p your_target_DB --compatible=mssql > MSSQL_Compatible_Data.sql
źródło
możesz użyć aplikacji sqlie do konwersji z mysql na sqlserver możesz obejrzeć ten film https://www.youtube.com/watch?v=iTVEqys_vTQ&t=108s
źródło