Конвертировать базу данных MySQL в базу данных Postgres с помощью pgloader - PullRequest
0 голосов
/ 19 сентября 2019

У меня есть база данных MySQL, которую я хотел бы преобразовать в базу данных Postgres.Я обнаружил, что pgloader.io делает это.Как я могу выполнить эту задачу?

1 Ответ

0 голосов
/ 19 сентября 2019
  1. Создайте файл, который определяет (в схеме pgloader), как будет функционировать передача данных.Вот мой пример:
LOAD DATABASE
     FROM      mysql://root:password@localhost/development
     INTO postgresql://helson@localhost/development

 WITH include drop, create tables, create indexes, reset sequences,
      workers = 8, concurrency = 1,
      multiple readers per thread, rows per range = 50000,
      prefetch rows = 10000

  SET PostgreSQL PARAMETERS
      maintenance_work_mem to '128MB',
      work_mem to '12MB',
      search_path to 'sakila, public, "$user"'

  SET MySQL PARAMETERS
      net_read_timeout  = '120',
      net_write_timeout = '120'
;

Существуют и другие варианты ограничения таблиц, например

including only table names matching 'users'

, которые можно включить перед точкой с запятой.

Вперед и выполните команду
pgloader schema

, где схема - это путь к файлу со схемой pgloader.

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

Это достаточно просто.Клонируйте репозиторий и выполните следующую команду

make DYNSIZE=20000 pgloader

. Это создаст новый исполняемый файл с гораздо большим размером кучи.Вы можете выполнить двоичный файл с помощью

./build/bin/pgloader ~/schema

или там, где находится ваша схема.

Перезапуск с увеличенным размером кучи. Могут возникнуть проблемы с ошибками строк при передаче.Для меня это было связано со строгими проблемами режима в MySQL.Мне пришлось вручную исправить эти проблемы (установка новых значений по умолчанию для столбцов, установка значений даты и времени на NULL вместо 0000-00-00 00:00:00).Исправьте эти проблемы и перезапустите pgloader, но на этот раз включите только те таблицы, которые вам нужны.

И это должно быть!

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