Конвертация данных из MySQL в PostgreSQL
Доброго времени суток! Как и все "разработчики", я стараюсь осваивать что то новое, пробовать новые технологии и использовать их на практике. Большая часть начинающих разработчиков начинает знакомство с СУБД MySQL, потому что она наиболее распространенная и неприхотливая в типизации и обслуживании. СУБД идет почти во всех сборках (Денвер, ХАМП, Open Server и etc), написано кучу документации и примеров оптимизации сервера, но если захочешь использовать нестандартные вещи, такие как:
- геолокацию;
- NoSQL хранилище;
- новые типы данных.
то, возможностей MySQL становится явно недостаточно. Поэтому и было принято решение перенести данные из одной СУБД в другую. Вроде бы все должно спокойной перенестись т.к. там и там SQL, но нет, с первого раза даже у меня нашлись ошибки в схеме (благодаря DBConvert). Ну давайте рассмотрим плюсы PostgreSQL:
- Типы данных;
- Целостность данных;
- hstore, json, jsonb;
- нет форков и т.д.;
- полная совместимость с SQL стандартами.
Это не полный список плюсов PostgreSQL, главным плюсом является более профессиональный подход к построению СУБД.
В этой небольшой заметке постараемся рассмотреть замечательную утилиту DBConvert for MySQL & PostgreSQL. Вот что пишут разработчики:
DBConvert для MySQL & PostgreSQL надёжный инструмент двустороннего действия, позволяющий конвертировать данные из одной базы данных в другую.
Из возможностей:
- Высокая производительность и скорость конвертации данных
- Оптимальное преобразование типов данных
- Безопасная конвертация и целостность базы данных
- Условная миграция данных
- Обходные пути в работе с защитными системами и правами доступа
- Поддержка полной архитектуры юникода
- Сохраняющиеся сессии
- Режим командной строки
Функциональные возможности
- Интерактивный графический пользовательский интерфейс/режим командной строки;
- Сохранение данных в PostgreSQL дамп и PHP-скрипт для экспортирования в базу данных PostgreSQL;
- Поддержка рабочих групп для MS MySQL;
- Возможность замены символов в названиях таблиц и полей (которые не должны быть использованы как символы, зарезервированные для внутренних целей СУБД) на другие подходящие символы.
- Автоматизация процесса конвертации с помощью планировщика задач.
- Возможность выбора типов таблиц (ISAM, MYISAM, HEAP, InnoDB или BDB) при копировании данных в PostgreSQL или PostgreSQL дамп;
- Поддержка юникода/поддержка наборов символов для подсоединения:
- LATIN1, LATIN2, LATIN5, LATIN7, ARMSCII8, ASCII, CP1250, CP1251, CP1256, CP1257, CP850, CP852, CP866, DEC8, GEOSTD8, GREEK, HEBREW, HP8, KEYBCS2, KOI8R, KOI8U, MACCE, MACROMAN, SWE7, TIS620, UTF8 (набор знаков юникода);
- Поддержка первичных ключей и индексов;
- Поддержка внешних ключей (связей);
- Улучшенные настройки конфигурации:
- — частичная выборка объектов для конвертации баз данных;
- — настройка объектов (таблицы, поля, индексы, внешние ключи) перед процессом конвертации;
- — выявление возможных ошибок конвертации на этапе конфигурации.
- Поддержка сессий – все настройки сохраняются для дальнейшего использования;
- Поддержка типов `ENUM` и `SET`
- Поддержка типа доступа для идентификатора `GUID`;
- Поддержка пакетов для OLE- объектов;
- Возможность подключения к серверу баз данных PostgreSQL, установленного на машинах, использующих Unix и Windows OS.
Скажем так, это одна из лучших софтин для конвертации данных, перед тем как писать этот обзор я перепробовал несколько и половину не могли сделать.
После настройки подключения к базам MySQL и PostgreSQL, программа выдаст список таблиц с пометками, если там содержатся ошибки. Например:
И более подробно об ошибке:
После исправления всех замечаний можно смело нажимать "Запуск" и ждать окончания. Одним из минусов, то что по окончанию процесса программа не выводит сообщения о статусе, с первого взгляда не поймешь закончена или нет конвертация.
В целом программой доволен, теперь придется переделывать свое приложение ORM
Скачиваем и пробуем: https://dbconvert.com/ru/convert-mysql-to-postgresql-pro.php