Сейчас я нахожусь в процессе миграции моей базы данных MySQL в PostgreSQL. Почти все прошло нормально (ну, после множества поисков правильных параметров mysqldump и т. Д.), За исключением одной таблицы, которая у меня есть - фактически самая важная таблица в моем приложении.
Структура таблицы очень проста:
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
но это очень большой (> 20 Гб).
Я пытался использовать --hex-blob параметр mysqldump - но данные в этом формате не принимаются PostgreSQL, когда я пытался использовать полученный файл дампа в качестве командного файла. Другой вариант, который я пробовал - использовать параметр --tab, чтобы просто получить дамп и затем вставить его в PostgreSQL с помощью команды COPY, но --hex-blob не работает с --tab, а PostgreSQL по-прежнему не принимает файл дампа, в котором говорится недопустимые символы в нем.
Я был бы очень рад получить совет по этому вопросу - хотя я начинаю думать, что написание пользовательского инструмента миграции в конце концов неплохая идея ...