Импорт данных из одной базы данных MySQL в другую базу данных MySQL? - PullRequest
0 голосов
/ 27 апреля 2011

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

Заранее спасибо

Ответы [ 3 ]

2 голосов
/ 27 апреля 2011

Вы говорите о сценариях извлечения, преобразования, загрузки (ETL).

Переход от денормализованных данных к нормализованным данным - ад. Я надеюсь, что вы делаете обратное - нормализованное к денормализованному - что выглядит так:

Напишите скрипт оболочки, который:

  1. Сбрасывает первую базу данных: mysqldump olddb >dump.sql
  2. Загружает его в новую чистую базу данных: mysql newdb <dump.sql
  3. Напишите несколько CREATE TABLE AS SELECT ... команд и выполните их через MySQL, чтобы создать денормализованные данные.
  4. Бросай все столы, которые тебе не нужны.

Превращение денормализованных данных в нормализованные является безумно трудным, требуя подхода, специфичного для вашего набора данных.

2 голосов
/ 27 апреля 2011

Я думаю, что лучше использовать программное обеспечение ETL.

Согласно Википедии :

Извлечение, преобразование и загрузка (ETL) - это процесс использования базы данных, который включает:

  • Извлечение данных из внешних источников
  • Преобразование в соответствии с оперативными потребностями (которые могут включать уровни качества)
  • Загрузка его в конечную цель (база данных или хранилище данных)
1 голос
/ 27 апреля 2011

Я согласен с тем, что говорит Стивен, но вы можете достичь этого с помощью подобной техники. Но вы должны создавать более сложные запросы. Вы можете сделать что-то вроде:

INSERT INTO table1(field1, field2,...) SELECT field4,field1,... FROM table1;

Очевидно, вы должны делать это в правильном порядке, IMO, это хороший подход, поэтому вы можете создавать сложные запросы с объединениями и т. Д.

...