Заполнение базы данных MySQL из файла дампа postgresql

На самом деле мне нужно заполнить базу данных MySQL из файла SQL, который был создан postgresql как

pg_dump dbname > myfile.sql

Итак, если я попытаюсь сделать что-то вроде

mysql> source myfile.sql

Это, очевидно, не работает. Хотя он заполнил 70% таблиц, но я хочу знать, есть ли способ его достижения?

Из исходного файла postgresql я могу указать и заполнить мою базу данных MySql.

Ответы

Ответ 1

Если вы хотите перенести данные и структуру из таблицы postgres в эквивалент mysql, самый простой способ - использовать инструмент преобразования базы данных, например: ESF Data Migration Toolkit или с открытым исходным кодом openDBCopy.

Если вы не хотите или вы не можете использовать средство миграции, и вам нужно только перенести данные, другой простой способ - это экспортировать данные в формате CSV из PostgreSQL, а затем импортировать его в MySQL, чтобы вы могли делать он с некоторыми командами вроде:

ВКЛ Postgres (Экспорт):

COPY (SELECT query) TO '/path to csv file -*.csv'; 

В Mysql (Import):

load data infile 'path to csv file-*.csv' into table tablename fields terminated by ',' lines terminated by '\n' . 

Если вы все равно захотите продолжить работу с инструментом дампа (pg_dump), вы можете добавить эти параметры, чтобы создать файл дампа, который MySQL может понять лучше:

-d --data-only --no-owner --no-acl --attribute-inserts --disable-dollar-quoting --no-tablespaces

Имейте в виду, что в зависимости от структуры исходной базы данных вам может понадобиться манипулировать файлом дампа, чтобы MysQL мог понять сгенерированный файл дампа...

Ответ 2

Лучший способ миграции без потери данных - использовать миграции Mysql Workbench. Этот учебник объясняет, как выполнять миграции. Ниже перечислены некоторые вещи, не упомянутые в учебнике, который я считаю важным:

  • Установите последние драйверы postgres для подключения базы данных postgres источника, как установить этот драйвер можно в этом tutoria:
  • Загрузите и установите драйверы odgc postgres из здесь
  • После установки вы увидите драйверы в "Open ODBC Administrator"       1. введите описание изображения здесь      2.
  • Используйте "PostgreSQL Unicode (x64)" в качестве драйвера при настройке базы данных postgres введите описание изображения здесь

Примечание: использование "PostgreSQL ANSI (x64)" в качестве драйвера дает ошибку при миграции. Может быть, потому, что мои данные содержат символы Unicode.