Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak przeprowadzić migrację bazy danych MS SQL działającej na zdalnym komputerze do mojej lokalnej bazy danych MySQL działającej na Linuksie, zachowując kodowanie?

Używając MySQL Workbench, wypróbowałem te kombinacje, żadna z nich nie zadziałała:

zdalny MS SQL> zdalny sterownik ODBC dla MySQL

zdalny MS SQL> zdalny sterownik MySQL ODBC DataSource

zdalny MS SQL> zdalny sterownik MySQL freeTDS ODBC (z lub bez UTF-8)

wirtualny MS SQL> wirtualny MySQL natywny sterownik ODBC

wirtualny MS SQL> wirtualny sterownik MySQL ODBC DataSource

wirtualny MS SQL> wirtualny sterownik MySQL freeTDS ODBC (z lub bez UTF-8)

W każdym z tych przypadków albo proces migracji utknął (nie odpowiada Workbench), albo znaki nie zostały poprawnie przeniesione.

Całkowity czas prób i błędów wyniósł około 12 godzin.

Tutaj dzielę się z wami jednym ze sposobów, w jaki udało mi się pomyślnie przenieść całą bazę danych MS SQL na mój lokalny serwer MySQL działający na moim komputerze deweloperskim.

Ponieważ łączyłem się ze zdalną maszyną W10 przez Remote Desktop Connection (RDC) z mojej maszyny VirtualBox, na początku chciałem usunąć ten dodatkowy krok, aby było łatwiej.

  1. jeśli jeszcze nie masz, pobierz i zainstaluj bezpłatną maszynę Virtual Box oferowane przez Microsoft i uruchom

  2. z tej maszyny wirtualnej uruchom RDC i przed połączeniem dodaj dysk lokalny na maszynie wirtualnej, aby był dostępny na maszynie zdalnej

  3. na zdalnym komputerze uruchom studio zarządzania SQL Server i utwórz kopię zapasową bazy danych (kliknij prawym przyciskiem myszy żądaną bazę danych, Zadania> Kopia zapasowa..., zapisz plik kopii zapasowej na dysku)

  4. skopiuj ten plik kopii zapasowej na dysk na maszynie wirtualnej, przechodząc do Sieci i przesyłając plik na dysk C:na maszynie wirtualnej

  5. zainstaluj na swojej maszynie wirtualnej serwer MS SQL w wersji Express, która jest bezpłatna, wraz z SQL Server Management Studio (pobrałem wersję 2014)

  6. utwórz nową bazę danych i wybierz Zadania...> Przywróć> Baza danych..., wybierz plik przesłany do maszyny wirtualnej, wybierz Nadpisz istniejącą bazę danych..

  7. utwórz nowy login dla swojego serwera MS SQL (kliknij prawym przyciskiem myszy na Logins), wybierz żądany login i hasło, przypisz rolę sysadmin, aby było łatwiej, ponieważ jest to jednorazowy proces migracji

  8. na lokalnym komputerze Host Linux zainstaluj najnowszą wersję MySQL Workbench, zakładam, że baza danych MySQL działa już lokalnie, jeśli nie, zainstaluj ją

  9. ponieważ korzystasz z systemu Linux, będziesz potrzebować dodatkowego kroku, aby zainstalować sterownik FreeTDS ODBC w swoim systemie, jeśli ten link, jak zainstalować sterownik FreeTDS w systemie Linux nie działa, poszukaj Kreatora migracji bazy danych / migracji Microsoft SQL Server w instrukcji MySQL Workbench

  10. skonfiguruj maszynę wirtualną, aby była dostępna z systemu Linux Host, zrobiłem to, wybierając Attached to:Bridged adapter i wybierając wlan0 w ustawieniach maszyny wirtualnej

  11. uruchom maszynę wirtualną i wybierz zakres adresów IP z tej samej sieci, z której korzysta karta

  12. na maszynie wirtualnej dodaj regułę zapory dla serwera MS SQL lub tymczasowo wyłącz zaporę

Od teraz wszystko odbywa się na lokalnej maszynie z systemem Linux z uruchomioną maszyną wirtualną

  1. uruchom MySQL Workbench' Database Migration, wybierz MS SQL jako maszynę źródłową, wprowadź poprawny adres IP ustawiony wcześniej na maszynie wirtualnej

  2. jako docelową bazę danych użyj ustawień i danych logowania lokalnej bazy danych MySQL

  3. w kroku Opcje tworzenia celu wybierz tylko Utwórz plik skryptu SQL i wybierz Zachowaj schematy, jeśli już zostały zamknięte.

  4. wykonaj kolejne kroki, aż dojdziesz do konfiguracji przenoszenia danych. Tam wybierz kopię tabeli online... ale nie naciskaj Dalej

  5. edytuj skrypt zapisany w kroku 15.:

usuń:

CREATE SCHEMA IF NOT EXISTS `Test` ;

dodaj:

CREATE DATABASE `Test` DEFAULT CHARACTER SET utf16 COLLATE utf16_czech_ci;

zmień wszystkie definicje tworzenia tabeli, dodając żądany zestaw znaków i sortowanie do definicji tabeli:

CREATE TABLE IF NOT EXISTS `TestTable` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) COLLATE utf16_czech_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) DEFAULT CHARSET=utf16 COLLATE=utf16_czech_ci;
  1. uruchom ten zaktualizowany skrypt w swojej bazie danych MySQL

  2. przejdź do następnego kroku w MySQL Workbench, a dane powinny zostać poprawnie zaimportowane

Mogą wystąpić pewne kroki, które nie zostały wyraźnie określone, daj mi znać w komentarzach, jeśli potrzebujesz wyjaśnień




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak używać odpowiedzi z żądania Jmeter JDBC w żądaniu HTTP?

  2. Jak zrobić użycie modułu Python Msqldb? zamiast %s dla parametrów zapytania?

  3. PDO:sprawdź zaktualizowany lub wstawiony rekord za pomocą mysql INSERT ON DUPLICATE KEY UPDATE

  4. Dziwne zachowanie podczas przesyłania w mysql

  5. Funkcje punktów przestrzennych przy użyciu Laravel Eloquent ORM