2009-10-22 14 views
8

Przeprowadzam badania dotyczące migracji z serwera sql firmy Microsoft do Postgresql i szukam najlepszych narzędzi, aby wykonać zadanie.Serwer SQL do PostgreSta

Szukając narzędzia podobnego do MySQL Migration Toolkit, wykonałem testową migrację naszych baz danych do MySQL i kazałem je przeprowadzić w niecałą godzinę.

Wygląda na to, że pgAdmin zrobi większość tego, co robiliśmy z Sql Server Management Studio, a tabele pg_stat będą wystarczająco dobre dla dostrajania wydajności.

Jakie są inne kluczowe narzędzia, z których wszyscy korzystają przy opracowywaniu i pracy z PostgreSQL?

+1

Gratuluję wam decyzji o odejściu od przebłagalni sprzedawcy. – LiraNuna

+3

Więcej, jeśli możemy, odejdziemy od opłat licencyjnych wielkich dostawców. – Lance

Odpowiedz

3

W PostgreSQL migracji z jednej wersji do drugiej, która miała żadnych narzędzi dla niego użyłem tylko jednego narzędzia, na unix sed.

Moje zalecenie jest po prostu wyeksportować sql. Oczyść ekscentry specyficzne dla klienta eksportu (zwykle w komentarzach), a następnie spróbuj zaimportować je do bazy danych SQL i sprawdzić, co się stanie. Błędy są twoimi wskazówkami. Użyj sed, aby przejść przez plik mssql i wypisz plik postgres sql poprawiający błędy. Gdy znajdziesz się w środowisku funkcjonalnym, spójrz na same dane, niektóre rzeczy mogą być inne, niż się spodziewałeś. Po testach i dalszej korekcie jesteś dobry.

+0

To będzie trochę bolesne na stołach z milionami rekordów, ale wykonalne, mogę po prostu napisać mały skrypt, aby połączyć się z obydwoma bazami danych i przenieść dane. – Lance

+0

To może działać płynniej. Liczba zmian, które musisz zrobić z Sedem, nie jest zbyt duża. Linie są trudne do stworzenia czasem jako wyrażenia regularne. Ale zasadniczo rozwiązujesz jeden TYP problemu naraz, zamiast każdego pojedynczego problemu na sobie. Szkoda, że ​​nie miałem scenariusza, który napisałem, chciałbym opublikować jako przykład. Jeśli jesteś guru wyrażeń reg tho, to jest dość łatwe. Powodzenia :) –

2

Zgadzam się z Chisum. Wyeksportowałbym dane z MSSQL jako skrypt SQL (lub podzbiór, jeśli jest ogromny - może jedna tabela na raz lub mniejsze zakresy); i spróbuj uruchomić go przeciwko PostgreSQL; i zobacz, co się stanie. Być może będziesz musiał napisać skrypt sed lub mały skrypt perla, jeśli są jakieś gnarlies, które sprawią, że będzie działał prawidłowo, ale nie spodziewałbym się, że to będzie śmieszne.

Zaimportuj dane do PostgreSQL i zobacz, co się stanie. Prawdopodobnie napotkasz więcej problemów ze strukturą tabeli, indeksami i odniesieniami niż innymi rzeczami.

Tam jakieś info na stronie Postgres tutaj: http://wiki.postgresql.org/wiki/Converting_from_other_Databases_to_PostgreSQL#Microsoft_SQL_Server

0

To zależy od tego, co dokładnie trzeba przekonwertować z SQL Server do PostgreSQL. Jeśli mówisz o DDL i tylko procesie konwersji danych, możesz spróbować wyeksportować wszystko za pomocą SQL Server Management Studio zgodnie z sugestią, spróbuj uruchomić ten skrypt do bazy danych PostgreSQL za pomocą PGAdmin lub narzędzia psql i spróbuj naprawić błędy wyzwolone podczas import. Należy jednak pamiętać, że nawet w takim przypadku mogą występować problemy z konwersją RESERVED WORDS, konwersją IDENTITY, przeliczaniem kolumn obliczeniowych, konwersją danych wielojęzycznych, konwersją indeksów klastrowych i innymi. Nie wiem, czy program REGEXP może pomóc w rozwiązywaniu problemów związanych z konwersją tych funkcji.

Jeśli mówimy o konwersji obiektów Business Logics, takich jak wyzwalacze, SP, UDF, wtedy będzie znacznie więcej problemów w całym procesie konwersji, nawet przy użyciu istniejących darmowych narzędzi, które wykonuje migrację SQL Server do PostgreSQL baz danych, ponieważ składnia i techniki określania i utrzymywania tej lub innej operacji w obu bazach danych są naprawdę różne.Nawet jeśli jesteś prawdziwym GURU w REGEXP w takim przypadku, będzie naprawdę trudno zautomatyzować zmianę kodu lub re-factoring kodu w celu wsparcia specyfiki źródłowej bazy danych. Najczęstsze funkcje to: wbudowane funkcje, zapytania hierarchiczne, przetwarzanie błędów, przetwarzanie transakcji, zwracanie i przetwarzanie zestawów wyników, Dynamic-SQL, konwersja instrukcji i wiele innych.

Tak więc, w zależności od wymagań, można korzystać z bezpłatnych rozwiązań, które w większości przypadków wymagają dodatkowych znaczących wysiłków ręcznych w procesie konwersji.

0

Liquibase może pomóc w konwersji schematu z MS SQL do PostgreSQL określonego schematu. (Kilka ręcznych interwencji wymagane, ale jest to całkiem przydatne) do migracji danych, można wyeksportować SQL Server do CSV i zaimportować go do PostgreSQL.