Могу ли я объединить две базы данных в одну в Mysql, если они оба имеют одну и ту же схему?

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

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

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

2 ответа

Запустите 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


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

licensed under cc by-sa 3.0 with attribution.