Перенос БД MySQL на PostgreSQL

Описан перенос базы данных на Windows. Для Linux-систем все значительно проще и большую часть материала можно пропустить.

Исходные данные: Python 3.5 Win32 установлен на Windows с помощью Anaconda.

Скрипт переноса данных работает только в Python 2.7, что приводит к необходимости создать дополнительное окружение.

Python 2.7

Примеры команд представленных ниже выполняются из командной строки Windows.

Список окружений:
conda info --envs

Создание окружения:
conda create -n py27 python=2.7 anaconda

Включение окружения:
activate py27

Установка py-mysql2pgsql

Существует прекрасная разработка, которая позволяет быстро и без хлопот перенести базу данных MySQL в PostgreSQL напрямую или через дамп-файл. Репозиторий и инструкция здесь.

Для установки скрипта необходимо скачать и установить следующие пакеты:

  • MySQL_python
  • psycopg2

Включаем окружение с Python 2.7. Идем сюда, скачиваем бинарники пакетов и устанавливаем командами:

pip install MySQL_python-{версия}.whl
pip install psycopg2-{версия}.whl

Чуть подробнее описано в статье psycopg2 или pygresql для python 3.5 на windows.

Затем устанавливаем py-mysql2pgsql:
pip install py-mysql2pgsql

Запускаем:
python py-mysql2pgsql

Если системе не удается найти скрипт, нужно указать полный путь.
Самым легким решением увидеть полный путь, вызвать удаление пакета и скопировать путь оттуда. Само удаление производить не надо.

Команда удаления:
pip uninstall py-mysql2pgsql

При первом успешном запуске будет создан файл настроек в директории, из которой вызывали скрипт.

Правим созданный файл настроек:
mysql2pgsql.yml

Запускаем:
python py-mysql2pgsql

Простую базу данных скрипт переносит превосходно. Сам создает таблицы и индексы. Однако после переноса, важно все перепроверить вручную.