Как перенести данные из базы данных Firebird в PostGreSQL в Linux
Есть ли хорошие инструменты для переноса существующих баз данных Firebird в PostgreSQL для систем Linux?
Я посмотрел на: FBexport, который можно использовать для вывода данных в виде операторов вставки, но в основном он написан для экспорта / импорта из одной базы данных Firebird в другую, а не в качестве инструмента миграции.
Также есть: Firebird to PostgreSQL Win32, но только для систем win32.
Есть ли хороший инструмент для этого? Или я должен просто свернуть свой?
4 ответа
Когда мне нужно было переместить некоторые сложные данные из базы данных MySQL в базу данных PostgreSQL, я написал сценарий perl, который подключился к базе данных MySQL, выбрал данные и сделал все необходимые преобразования (например, tinyint(1) для логического значения и автоинкремент к последовательности). и т. д.) и вставил его в базу данных PostgreSQL. Для более простых преобразований я сделал mysql_dump для файла операторов вставки, как это сделает ваш FBexport, затем исправил то, что нужно было исправить с помощью сценария sed. Это не автоматизировано и не идеально, но это было быстро и достаточно хорошо.
Проверь это:
http://www.sqlmanager.net/en/products/postgresql/datapump
Я никогда не использовал его, поэтому не могу сказать, хорошо это или нет.
Вы можете использовать FullConverter, но я не думаю, что какой-либо коммерческий инструмент справится с этим одним щелчком мыши. вам нужно будет проверить ограничения, индексы и автоинкременты.
Вы также можете попробовать написать свой собственный скрипт bash/perl/python/ любой другой для выполнения этой работы.
Из ответов, которые я получил здесь, я понимаю, что нет специального инструмента миграции для Firebird -> PostgreSQL в Linux.
Я думаю, мне придется написать это самому.
Основной проблемой здесь является оптимизация производительности такой миграции.
Я нашел отличный ресурс в главе 14 документации postgreSQL, которая объясняет, как лучше всего вставить большие объемы данных в postgreSQL, например:
- Отключение автоматической фиксации.
- Использование COPY вместо серии операторов INSERT.
- Удаление индексов (или, что более важно, только создавать их в конце вставки данных).
- Различные настройки конфигурации памяти.