2008-10-01 27 views
52

Tytuł jest oczywisty. Czy istnieje sposób bezpośredniego dokonywania takiego importu?Jak zaimportować plik .bak programu SQL Server do MySQL?

+3

również [objęte dba.stackexchange] (http://dba.stackexchange.com/q/20078/1580) –

+0

Eposowe pytanie! Ostatecznie udało mi się zaimportować plik bak z mojego gburowatego dostawcy hostingu, w którym złamano wszystkie narzędzia SQL. – ppumkin

Odpowiedz

58

pliki .bak z serwera SQL są w formacie Microsoft Tape (MTF) ref: http://www.fpns.net/willy/msbackup.htm

Plik bak będzie prawdopodobnie zawierać pliki MDF i LDF, że SQL Server używa do przechowywania bazy danych.

Będziesz musiał użyć serwera SQL, aby je wyodrębnić. SQL Server Express jest bezpłatny i wykona zadanie.

Należy zatem zainstalować edycję SQL Server Express i otworzyć pakiet SQL Server Powershell. Wykonaj sqlcmd -S <COMPUTERNAME>\SQLExpress (po zalogowaniu jako administrator)

następnie wydaj następujące polecenie.

restore filelistonly from disk='c:\temp\mydbName-2009-09-29-v10.bak'; 
GO 

To będzie lista zawartości kopii zapasowej - Co trzeba to pierwsze pola, które mówią Ci nazwy logiczne - jeden będzie rzeczywista baza danych, a drugi plik dziennika.

RESTORE DATABASE mydbName FROM disk='c:\temp\mydbName-2009-09-29-v10.bak' 
WITH 
    MOVE 'mydbName' TO 'c:\temp\mydbName_data.mdf', 
    MOVE 'mydbName_log' TO 'c:\temp\mydbName_data.ldf'; 
GO 

W tym momencie zostały wyodrębnione z bazy danych - następnie zainstalować Microsoft's "Sql Web Data Administrator". wraz z this export tool i masz skrypt SQL, który zawiera bazę danych.

+1

dziękuję Richard! Wyciągnij mnie z dżemu. –

+3

Problem polega na tym, że SQL Server 2008 Express Edition może obsłużyć tylko pliki bazy danych o wielkości 10 GB i mniejsze. Mam plik 30GB, z którym muszę pracować. Połączenie internetowe w pracy jest zbyt wolne, aby pobrać obraz 4GB .iso pełnej wersji programu SQL Server 2008 R2, którą otrzymuję bezpłatnie od dreamspark.com jako student. Mam to dokładnie to samo pytanie. – systemovich

+0

Łącze do pierwszego instalowanego oprogramowania jest zepsute. –

2

Mimo że moje tło MySQL jest ograniczone, nie sądzę, abyś miał dużo szczęścia, robiąc to. Jednak powinieneś być w stanie przeprowadzić migrację wszystkich danych, przywracając bazę danych do serwera MSSQL, a następnie tworząc pakiet SSIS lub DTS, aby wysłać swoje tabele i dane do serwera MySQL.

mam nadzieję, że to pomoże

0

Bardzo w to wątpię. Możesz użyć DTS/SSIS, aby to zrobić, jak mówi Levi. Uważa się, że możesz chcieć rozpocząć proces bez faktycznego importowania danych. Wystarczy zrobić, aby uzyskać podstawowe struktury tabeli. Wtedy będziesz chciał zmienić wokół wynikowej struktury tabeli, ponieważ jakakolwiek struktura tat będzie prawdopodobnie utworzona, będzie w najlepszym razie chwiejna.

Możesz również zrobić krok dalej i utworzyć obszar przemieszczania, który pobiera wszystkie dane jako pierwszą ciąg znaków (varchar). Następnie można utworzyć skrypt, który dokonuje sprawdzania poprawności i konwersji, aby uzyskać go w "prawdziwej" bazie danych, ponieważ obie bazy danych nie zawsze dobrze ze sobą współpracują, szczególnie w przypadku dat.

0

Bazy danych SQL Server są własnością firmy Microsoft. Dwie opcje, o których mogę pomyśleć to:

  1. Zrzuć bazę danych w formacie CSV, XML lub podobnym formacie, który następnie załadujesz do MySQL.

  2. Skonfiguruj połączenie ODBC z MySQL, a następnie za pomocą DTS transportuj dane. Jak sugerował Charles Graham, zanim to zrobisz, będziesz musiał zbudować tabele. Ale to jest tak proste jak cięcie i wklejanie z okien SQL Enterprise Manager do odpowiedniego okna MySQL.

+0

Czy to działa, jeśli przygotuję zrzut w formacie .sql !! – sandeep

8

Nie udało mi się znaleźć sposobu na zrobienie tego bezpośrednio.

Zamiast tego zaimportowałem plik bak do SQL Server 2008 Express, a następnie użyłem MySQL Migration Toolkit.

Pracował jak urok!

+0

Tak, import zadziałał dobrze dla mnie. Kliknij prawym przyciskiem myszy węzeł "bazy danych", kliknij Importuj - Najpierw wybierz plik BAK, a następnie wybierz bazę danych - Automatycznie pobiera nazwę bazy danych z załadowanego pliku .bak i umieszcza go na liście. (Aby utworzyć nową bazę danych) Wybierz i kliknij import .. Woohoo - 6 dni później! – ppumkin

+0

Zestaw narzędzi do migracji MySQL osiągnął wartość EOL. zobacz http://dev.mysql.com/downloads/gui-tools/5.0.html – Jakob

+1

Funkcja "Database Migration" jest teraz częścią [MySQL Workbench] (http://dev.mysql.com/downloads/tools/ workbench /) – dazweeja

0

Sposób użyłem dołączonego część metody Richarda Harrisona:

Więc zainstalować SQL Server 2008 Express edycję,

To wymaga pobrania z Microsoft Web Platform Installer „wpilauncher_n.exe " Po zainstalowaniu kliknij na wybór bazy danych (wymagane jest również pobranie frameworka i środowiska wykonawczego)

Po instalacji przejdź do t on okna wiersza polecenia oraz:

użycie sqlcmd -S \ SQLEXPRESS (podczas zalogowany jako administrator)

wydaj następujące polecenie.

przywrócić filelistonly z disk = 'c: \ temp \ mydbName-2009-09-29-v10.bak'; GO Zostanie wyświetlona lista kopii zapasowej - potrzebne będą pierwsze pola , które podadzą logiczne nazwy: jedna będzie faktyczną bazą danych, a druga plikiem dziennika.

przywracania bazy mydbName Z dysku = 'C: \ temp \ mydbName-2009-09-29-v10.bak' Przesuń 'mydbName' DO 'C: \ temp \ mydbName_data.mdf', MOVE ' mydbName_log 'TO ' c: \ temp \ mydbName_data.ldf '; GO

Zwolniłem się Microsoft Web Platform Installer iz Co znajduje się w nowej karcie po zainstalowaniu SQL Server Management Studio i przeglądać db upewnić się, że dane było ...

W tym momencie próbowałem narzędzia zawarte w MSSQL "Kreator importu i eksportu SQL", ale wynik zrzutu CSV zawiera tylko nazwy kolumn ...

Zamiast tego właśnie wyeksportowałem wyniki zapytań typu "wybierz * od użytkowników" z SQL Server Management Studio

0

Dla tych, którzy próbują rozwiązania Richarda bove, oto kilka dodatkowych informacji, które mogą pomóc w nawigowaniu typowych błędów:

1) Podczas uruchamiania przywracania plików może pojawić się błąd systemu operacyjnego 5 (odmowa dostępu). W takim przypadku otwórz program SQL Server Configuration Manager i zmień login dla SQLEXPRESS na użytkownika, który ma lokalne uprawnienia do zapisu.

2) @ "Spowoduje to wyświetlenie zawartości kopii zapasowej - potrzebne są pierwsze pola, które podadzą logiczne nazwy" - jeśli plik zawiera więcej niż dwa nagłówki, należy również uwzględnić, co należy zrobić z tymi plikami w poleceniu RESTORE DATABASE. Jeśli nie wskażesz, co zrobić z plikami spoza bazy danych i dziennika, system najwyraźniej spróbuje użyć atrybutów wymienionych w pliku .bak. Przywracanie pliku z czyjegoś środowiska wygeneruje "Ścieżka ma nieprawidłowe atrybuty. Musi to być katalog "(ponieważ dana ścieżka nie istnieje na twoim komputerze). Samo podanie instrukcji MOVE rozwiązuje ten problem.

W moim przypadku był trzeci plik typu FTData.Polecenie MOVE dodałem:

MOVE 'mydbName_log' TO 'c:\temp\mydbName_data.ldf', 
MOVE 'sysft_...' TO 'c:\temp\other'; 

w moim przypadku faktycznie musiałem utworzyć nowy katalog dla trzeciego pliku. Początkowo próbowałem wysłać go do tego samego folderu co plik .mdf, ale wygenerował on błąd "nie udało się zainicjować poprawnie" w trzecim pliku FTData po wykonaniu przywracania.

3
  1. Otwórz program SQL Server Management Studio na komputerze lokalnym.
  2. Kliknij prawym przyciskiem myszy folder Bazy danych. Z wyskakującego menu wybierz opcję Nowa baza danych.
  3. Wprowadź nazwę bazy danych, a następnie kliknij przycisk OK.
  4. Kliknij prawym przyciskiem myszy ikonę nowej bazy danych. Z wyskakującego menu wybierz Zadania -> Przywróć -> Baza danych.
  5. Wybierz opcję From Device, a następnie kliknij przycisk przeglądania.
  6. Kliknij Dodaj i przejdź do odpowiedniego pliku. Kliknij OK.
  7. W oknie Przywróć bazę danych zaznacz pole wyboru obok pliku BAK.
  8. Przejdź do strony Opcje. Zaznacz pole wyboru Zastąp istniejącą bazę danych. Kliknij OK.
  9. Sprawdź zawartość bazy danych, która jest teraz aktywna na komputerze lokalnym.
+0

Perfect - to działało dla mnie. Do następnego (dziesiątego) kroku użyłem programu "Importuj i eksportuj dane", który jest instalowany z SQL Express. Nie można eksportować do programu Excel, ale CSV było w porządku. – Ben

+6

przeczytaj uważnie to pytanie, a następnie odpowiedz. napisał kopię z SQL Server do serwera mySql nie sql do serwera sql " – logcat

6

MySql ma aplikację do importowania db z microsoft sql. Kroki:

  1. Otwarte MySQL Workbench
  2. kliknij „migracji bazy danych” (jeśli nie pojawiają się trzeba zainstalować go z aktualizacji MySQL)
  3. Śledź migracji listy zadań za pomocą prostego kreatora.
+2

MySql Workbench jest do bani .Nie radzi sobie z kodowaniem znaków wystarczająco dobrze – Xiao

+9

@Sean, jeśli widzisz problem z MySQL Workbench, a następnie zgłasza raport o błędzie. , więc implementacje potrzebują kilku rund, aby stały się stabilne. –

0

Plik .bak z SQL Server jest specyficzny dla tego dialektu bazy danych i nie jest kompatybilny z MySQL.

Spróbuj użyć etlalchemy do migracji bazy danych SQL Server do MySQL. Jest to otwarte narzędzie, które stworzyłem, aby ułatwić łatwe migracje między różnymi RDBMS.

Szybka instalacja i przykłady znajdują się tutaj pod adresem the github page, a bardziej szczegółowe wyjaśnienie początków projektu można znaleźć pod adresem here.

Powiązane problemy