Перенос данных из одной базы данных в другую с другой структурой данных

Как переместить данные из базы данных mysql в базу данных postgres?

Сценарий: Два похожих приложения. Пользователь хочет переключиться с одного приложения на другое. Но он сохранил определенную информацию о данных в своем предыдущем приложении, которое использует базу данных mysql. Когда он переключает свое приложение, ему приходится перемещать свои данные из своего старого приложения в новое приложение, которое использует postgres.

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

Но как перенести дату из одной базы данных в другую?

Есть ли какой-нибудь инструмент для этого? Если да, то кто-нибудь может предложить такой инструмент.


person krisk    schedule 15.10.2009    source источник


Ответы (6)


Возможно, это не то, что вам нужно, но эта страница содержит

"downloadable Magic drupal-mysql2pgsql.pl Script"

и обсуждение трудностей переноса данных.

Это может быть неуместно, потому что он может переносить только базы данных Drupal (и вы не сказали, какие приложения задействованы).

Лучше всего экспортировать/резервировать данные MySQL в простой текстовой форме, которую можно преобразовать в формат PostgreSQL и импортировать. Это потребует некоторых сценариев/редактирования.

Именно поэтому вы попросили инструмент для работы.

person pavium    schedule 15.10.2009

Я бы сделал это так:

(Используя только инструменты базы данных)

  • создайте новую базу данных в MySQL и заполните ее пустыми таблицами, отношения точно такие же, как те, на которые мне нужно перейти (postgres)
  • скопируйте данные из исходной базы данных MySQL в новую, используя операторы SELECT (поскольку новые таблицы представляют собой смесь старых, я полагаю), или могут быть некоторые хранимые процедуры...
  • затем используйте инструмент дампа, который будет генерировать сценарии sql для моей новой базы данных, чтобы создать ее в другом месте. Для MySQL это инструмент mysqldump, и у него есть возможность генерировать сценарии, совместимые с postgres:--compatible=postgres и многие другие очень интересные опции.
  • запустить эти скрипты в моей новой базе данных
  • проверить на несоответствия, исправить...

(Используя специальное приложение + ORM (например: C #, NHibernate) - более длительный срок реализации):

  • создать мою новую базу данных на моей новой СУБД
  • создать сопоставление OR для исходной базы данных
  • создать сопоставление OR для новой базы данных
  • импортировать исходные данные, используя мой ORM
  • преобразовать мои данные, чтобы они соответствовали моей новой базе данных, и вставить их с моей ORM

(с помощью известного инструмента):

Извините, но я понятия не имею, есть ли инструмент, который может это сделать!

person manji    schedule 15.10.2009

Проблема, которую вы описываете, является одной из наиболее распространенных проблем в мире хранилищ данных, где вам необходимо брать данные из баз данных приложений (обычно это классическая реляционная модель данных) и консолидировать и централизовать в хранилище данных с различной структурой (в большинстве случаев с многомерной модель данных). Это то, что делают задания ETL (Extract Transform Load).

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

Существуют специальные инструменты ETL, но я не думаю, что в вашем случае они принесут слишком много пользы.

person Cătălin Pitiș    schedule 15.10.2009

Я бы также посоветовал использовать инструменты ETL для такой работы. Применение различных функций сделает вашу миграцию успешной на 100%. Я рекомендую использовать инструменты с открытым исходным кодом, такие как Apatar (apatar.com) для бизнес-пользователей и Talend (talend.com) для технических пользователей.

person user199588    schedule 30.10.2009

Для этих сценариев существует целая индустрия инструментов. Google для «ETL» и, возможно, также имен поставщиков баз данных, с которыми вы имеете дело, и вы, вероятно, найдете больше решений, чем сможете оценить за разумное время.

person Michael Maddox    schedule 15.10.2009

Я бы предложил тот же путь, что и другие, с небольшой разницей. Для этого используйте инструмент ETL. Большинство инструментов ETL выполнят только что описанную вами работу. Если вы не хотите тратить деньги на покупку инструмента «ETL», я голосую за инструмент Talend с открытым исходным кодом ETL. Я использовал его, и он довольно мощный. Документация и примеры доступны на http://www.talend.com.

person mevdiven    schedule 21.10.2009