Миграция с MySQL на Postgresql с автоинкрементами - как? - PullRequest
1 голос
/ 11 января 2011

Я рассматриваю миграцию с MySQL на Postgresql для своего веб-приложения, но мне очень трудно конвертировать мою существующую базу данных MySQL в Postgresql.

Я пытался:

  • mysldump с --compatible = postgresql
  • мастер миграции из EnterpriseDB
  • Postgresql Data Wizard из EMS
  • DBConvert из DMSoft

и НЕТИз вышеперечисленных программ хорошо выполняется преобразование моей базы данных!

Я видел несколько скриптов Perl и Python для преобразования mysql в postgresql, но я не могу понять, как их использовать .... (Я установил ActivePerlи не понимаю, что я должен делать дальше, чтобы запустить этот скрипт!)

Я все время использую поля автоинкремента (в качестве первичного ключа), и они просто игнорируются ... Я понимаючто Postgresql выполняет автоинкремент другим способом (с последовательностями), но для программного обеспечения MIGRATION это не так сложно реализовать, или это так?

Кому-нибудь повезло больше, если конвертировать MySQLбаза данных с автоинкрементами в качестве первичных ключей?

Ответы [ 4 ]

2 голосов
/ 11 января 2011

Я знаю, что это, вероятно, не тот ответ, который вы ищете, но: я не верю в "автоматизированные" инструменты миграции.

Возьмите ваши существующие SQL-сценарии, которые создают схему базы данных, выполните поиск и замените необходимые типы данных (номер автонумера сопоставляется с serial, который автоматически выполняет всю обработку последовательности за вас), удалите все элементы "engine =" а затем запустите новый скрипт против Postgres.

Сбросить старую базу данных в плоские файлы и импортировать их в цель.

Я делал это несколько раз с примерами баз данных, предназначенных для MySQL, и это действительно не занимает много времени.

Вероятно, так же долго, как и все разные "автоматизированные" инструменты.

1 голос
/ 01 февраля 2016

Почему бы не использовать инструмент ETL?Вам не нужно беспокоиться о свалках или подобных вещах.Я перешел на PostgresSQL и MySQL, и у меня не было проблем с полями автоинкремента.

Вам просто нужно знать учетные данные подключения и все.Я лично использую Pentaho (это с открытым исходным кодом).

Загрузите Pentaho ETL из http://kettle.pentaho.org/

Распакуйте и запустите Pentaho (используя .bat file spoon.bat)

Создайтеновое задание:

Создание соединения с БД для исходной базы данных (PostgreSQL) - с помощью меню: Инструменты → Мастер → Создать соединение с базой данных (F3) Создание соединения с БД для целевой базы данных (Mysql) - с использованием описанной выше методики.

Запустите мастер: Инструменты → Мастер → Копировать таблицы (Ctrl-F10).

Выберите источник (левая диалоговая панель) и пункт назначения (левая диалоговая панель).Нажмите Готово.

Задание будет сгенерировано - Запустите задание.

Если вам нужна помощь, дайте мне знать.

0 голосов
/ 25 августа 2016

Я знаю, что это старый вопрос, но я столкнулся с той же проблемой при миграции с MySQL на Postgres. После того, как я попробовал несколько инструментов миграции, самым лучшим из всех, что я смог найти, который перенесет структуру вашей базы данных настолько чисто, насколько это возможно, был Pgloader https://github.com/dimitri/pgloader/, он позаботится о том, чтобы без проблем поменять последовательность автоматического увеличения на Postgres, и это супер быстро.

0 голосов
/ 07 ноября 2015

Даже если вы знакомы со всеми "постгрешками в PostgreSQL", выполнение каждого шага вручную может занять много времени, особенно когда ваша база данных "большая". Попробуйте другие скрипты / инструменты .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...