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

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

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

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

Python 2.7

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

Список окружений:
[code]conda info —envs[/code]

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

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

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

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

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

  • MySQL_python
  • psycopg2

Включаем окружение с Python 2.7. Идем сюда, скачиваем бинарники пакетов и устанавливаем командами:
[code]
pip install MySQL_python-{версия}.whl
pip install psycopg2-{версия}.whl
[/code]

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

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

Запускаем:
[code]python py-mysql2pgsql[/code]

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

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

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

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

Запускаем:
[code]python py-mysql2pgsql[/code]

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