Mam kilka dużych .bak
plików ze zrzutu SQL Server 2005.
Czy mogę je przywrócić bez użycia SQL Server, zarówno do PostgreSQL, MySQL, jak i do płaskich plików tekstowych?
Najbardziej przydatne byłoby rozwiązanie typu open source.
Mam kilka dużych .bak
plików ze zrzutu SQL Server 2005.
Czy mogę je przywrócić bez użycia SQL Server, zarówno do PostgreSQL, MySQL, jak i do płaskich plików tekstowych?
Najbardziej przydatne byłoby rozwiązanie typu open source.
Odpowiedzi:
Oto, co sugeruję:
jeśli maszyna wirtualna ma wystarczającą ilość miejsca do przechowywania kopii zapasowej, ale nie ma wystarczającej ilości miejsca, aby ją również przywrócić, możesz wykonać „przywracanie wirtualne” przy użyciu wersji próbnej produktu firmy Red-Gate o tej samej nazwie (co pozwala na interakcję z plik kopii zapasowej, jakby został przywrócony). W przeciwnym razie przywróć bazę danych w normalny sposób .
Gdy baza danych będzie dostępna (poprzez normalne lub wirtualne przywracanie), możesz wygenerować skrypty dla schematu i danych w następujący sposób:
Alternatywnie możesz spróbować grać za pomocą narzędzia bcp, aby wyodrębnić dane do plików CSV lub podobnych, ale będziesz musiał wykonać tę tabelę po tabeli lub użyć sprytnego skryptu (PowerShell, T-SQL, C # / SMO itp. ), aby wygenerować dla ciebie wszystkie polecenia bcp. Gdy znajdziesz się w plikach CSV, zbiorcze ładowanie danych do Postgres powinno być trywialne (ale nadal będziesz mieć trochę pracy, aby wygenerować tabele).
Ostatecznie, jeśli plik .bak nie jest gigantyczny, a dane nie są poufne, chętnie spróbuję wygenerować dla Ciebie pliki w wymaganym formacie. Mam dużo maszyn wirtualnych z systemem Windows z przestrzenią, wyzwaniem byłoby przeniesienie pliku .BAK do miejsca, w którym mogę go odzyskać - zwłaszcza jeśli jest większy niż większość usług udostępniania plików.
źródło
Niestety nie ma sposobu na uzyskanie dostępu do zawartości pliku .bak bez głębokiej wiedzy o wewnętrznych elementach samego pliku. Mogę wymyślić tutaj jedną osobę, która może mieć dostęp do tych informacji, ale nie mogę powiedzieć, czy dana osoba powie ci, jak to zrobić
Będziesz musiał zainstalować instancję programu SQL Server. Musisz także upewnić się, że to wystąpienie może komunikować się z twoim serwerem Postgres (fregowanie z pg_hba.conf). Tam znajdziesz kilka dobrych ścieżek do migracji danych.
Pierwszą ścieżką byłoby zainstalowanie sterownika ODBC dla systemu Windows Postgres i skonfigurowanie połączenia z serwerem pg. Następnie możesz użyć SSIS do skryptu migracji danych. Jeśli zamierzasz pójść tą drogą, sugeruję zainstalowanie SSIS podczas instalowania serwera bazy danych.
Inna opcja obejmuje również połączenie sterownika ODBC, ale można utworzyć serwer połączony w programie SQL Server i uruchamiać wstawki w instancji pg za pośrednictwem programu SQL Server. Odpowiedziałem na to pytanie już wcześniej, więc nie powinno być trudno go znaleźć.
EDYTOWAĆ
Aby uwzględnić komentarz Aarona, po uruchomieniu programu SQL Server można również wyeksportować dane do płaskich plików na wiele różnych sposobów. Jeśli wybierzesz tę ścieżkę, daj mi znać, a ja opublikuję kilka sposobów, aby to zrobić
EDYCJA (2):
Proces połączonego serwera może nie być najlepszym rozwiązaniem, chyba że chcesz wcześniej utworzyć struktury. To moja preferowana metoda, ale zwykle mam już strukturę po obu stronach.
To pozostawia odpowiedź Aarona Bertranda jako najlepszą odpowiedź. Pamiętaj, że oprócz typów danych (
IDENTITY
vs.SEQUENCE
postgres nic nie wie,NVARCHAR
ponieważ ustawiłeś kodowanie w samej bazie danych). Postgres nic nie wieCREATE CLUSTERED INDEX
(CLUSTER
może działać dla Ciebie). Wreszcie, ponieważ widzę w komentarzach, że zamierzasz używać danych przestrzennych, postgresql nie wie nic oCREATE SPATIAL INDEX
składni. Musisz zainstalować postgis i użyćINDEXTYPE
słowa kluczowego, aby utworzyć indeksy przestrzenne. Na koniec upewnij się, że odpowiednio obsługujesz schematy.Krótko mówiąc:
źródło