Jestem teraz w trakcie migracji mojej bazy danych MySQL do PostgreSQL. Prawie wszystko poszło dobrze (cóż, po wielu googlingach dla poprawnych parametrów mysqldump itp.) Oprócz jednego stołu, który mam - właściwie najważniejszego stołu w mojej aplikacji.
Struktura tabeli jest bardzo prosta:
mysql> show create table samples;
.. skipped ...
CREATE TABLE `samples` (
`File_ID` int(11) NOT NULL,
`File` longblob,
PRIMARY KEY (`File_ID`)
) ENGINE=InnoDB DEFAULT CHARSET=binary
ale jest bardzo duży (> 20 Gb).
Próbowałem użyć parametru --hex-blob mysqldump - ale dane w tym formacie nie są akceptowane przez PostgreSQL, gdy próbowałem użyć wynikowego pliku zrzutu jako pliku komend. Inną opcją, którą próbowałem, jest użycie opcji --tab, aby po prostu uzyskać zrzut, a następnie wstawić go do PostgreSQL za pomocą polecenia COPY - ale --hex-blob nie działa z opcją --tab, a PostgreSQL nadal nie przyjmuje pliku zrzutu mówiącego tam są w nim nieprawidłowe znaki.
Byłbym bardzo szczęśliwy, gdyby uzyskać porady w tej sprawie - chociaż zaczynam myśleć, że napisanie niestandardowego narzędzia do migracji nie jest wcale złym pomysłem ...