Desperacko szukam narzędzia do konwersji do konwersji dużej bazy danych mysql do postgresql. Potrzebuję narzędzia / skryptu, aby:
- Darmowy
- Działa pod Linuksem
- Prosty w użyciu i nie ma błędów
- Próbowałeś i potwierdziłeś, że działa
- Najlepiej nie napisane w Javie lub Ruby
Próbowałem różnych narzędzi wymienionych tutaj , ale żadne nie działało dla mnie.
Z góry dziękuję.
mysql
postgresql
linux
hbp
źródło
źródło
Odpowiedzi:
Migracja między dwoma bardzo różnymi DBMS wymaga znacznie więcej niż tylko migracji danych. Ale migracja danych jest zwykle najłatwiejsza.
Sposób, który wypróbowałem, który jest bezpłatny i mogę potwierdzić, że działa:
Import danych może być trudny, jeśli polegasz na zachowaniu MySQL w celu zaakceptowania nielegalnych danych (np. 31 lutego)
Domyślam się, że będzie to szybsze niż szukanie narzędzia, ocenianie kilku z nich, a następnie próba zrozumienia tego, który wybrałeś. Ale to zależy od tego, do jakiego „dużego” masz na myśli. Jeśli duże jest kilkaset tabel, może to nie być możliwe. Jeśli duży odnosi się tylko do liczby wierszy, to prawdopodobnie jest to najszybszy sposób na zrobienie tego.
Istnieje kilka narzędzi, które mogą zrzucić schemat bazy danych w formacie niezależnym od DBMS (XML), takich jak Liquibase , SchemaSpy lub WbSchemaReport . Liquibase jest prawdopodobnie najłatwiejszym w użyciu. Inne będą wymagały ręcznej pracy przy pisaniu / rozszerzaniu XSLT w celu przekształcenia wygenerowanego XML.
Jeśli używasz wyzwalaczy i procedur przechowywanych w MySQL, nie sądzę, aby istniało jakieś zautomatyzowane narzędzie, które może je przetłumaczyć bez konieczności późniejszego poważnego ręcznego ustawiania - a wtedy wygenerowane procedury prawdopodobnie nie wykorzystałyby żadnych zaawansowanych funkcji docelowego DBMS .
źródło
Musiałem to zrobić niedawno, a ponieważ znalezienie narzędzia i zrobienie z nim rzeczy zajęłoby zbyt wiele czasu, zrobiłem to osobno z vimem i substytucją-foo
INT NOT NULL AUTO_INCREMENT
(lub coś takiego) naSERIAL
TEXT
(nie ma różnicy prędkości w użyciuTEXT
,VARCHAR
lub podobny)„
ENGINE InnoDB
(lub cokolwiek)UNSIGNED
BYTEA
'
i nic więcejCONCAT
jako rezerwy niestandardowej konkatenacji łańcuchów, przed wersją 9.1 zostało to zrobione przy użyciu'string' || ' string'
"
Każdy z tych pocisków powinien być wykonany z pojedynczą zamianą.
Schemat i dane wyeksportowałem osobno . Upewnij się, że używasz
INSERT
s zamiastCOPY
. Jeśli nie toczą się żadne fance, dane powinny wymagać (prawie) czyszczenia. Upewnij się, że wszystko jest włączoneUTF-8
. Dzięki 2 oddzielnym plikom schemat staje się łatwiejszy do zarządzania i nie masz pliku 1 GB do edycji.Podczas ładowania schematu otrzymujesz dość szczegółowe informacje o miejscu wystąpienia błędu, więc debugowanie powinno być dość proste.
źródło
Rzucam to tam, nigdy tego nie próbowałem, ale Tungesten Replicator może robić, co chcesz. Jest to przede wszystkim narzędzie do replikacji, ale myślę, że może mieć proces ładowania początkowego, który może ci pomóc przynajmniej z fragmentem danych.
źródło