Могу ли я объединить две базы данных в одну в Mysql, если они имеют одинаковую схему? - PullRequest
7 голосов
/ 30 июня 2011

У меня есть две базы данных в MySQL, в которых уже есть данные. у них точно такая же схема. Я хотел бы объединить эти две базы данных только в одну. Я попробовал:

mysqldump -u root -p --databases database1 database2 database3 > database1_database2_da

Однако, когда я пытаюсь открыть database1_database2_da, я получаю только данные из одной базы данных, но не все из них. Я также хочу упомянуть, что две базы данных имеют свои записи, начиная с 1, так как они генерируются автоматически. Как вы думаете, есть ли способ объединить эти две базы данных без потери данных ни от одной из них?

Ответы [ 2 ]

9 голосов
/ 30 июня 2011

Запустите mysqldump для каждой базы данных с параметром --no-create-info, чтобы избежать записи информации о схеме. Затем запустите один раз для одной базы данных с параметром --no-data. Если вы последовательно загрузите все эти файлы в одну целевую базу данных, это должно сработать, исключая любые различия в схеме между двумя базами данных или дублирующиеся первичные ключи.

mysqldump -u root -p --no-create-info database1 > database1.sql
mysqldump -u root -p --no-create-info database2 > database2.sql
mysqldump -u root -p --no-data database1 > schema.sql

После создания новой базы данных запустите

mysql -uroot -p -Ddatabase3 < schema.sql
mysql -uroot -p -Ddatabase3 < database1.sql
mysql -uroot -p -Ddatabase3 < database2.sql

Это также может работать. У меня нет окна Windows для тестирования на банкомате

type schema.sql database1.sql database2.sql | mysql -uroot -p -Ddatabase3
2 голосов
/ 06 июня 2014

SQL-Hub (http://sql -hub.com ) позволит вам объединить несколько баз данных с одной и той же схемой в одну базу данных. Существует бесплатная лицензия, которая позволит вам делать это из пользовательского интерфейса, хотя вам может потребоваться оплатить лицензию, если вы хотите запланировать автоматический запуск процесса. Для одноразовой задачи с 2 базами данных вы можете просто сделать это с помощью бесплатной лицензии.

...