我在MySQL中有两个已经拥有数据的数据库。他们有完全相同的架构。我想将这两个数据库合并为一个。我试过了:
mysqldump -u root -p --databases database1 database2 database3 > database1_database2_da
然而,当我尝试打开database1_database2_da
时,我最终只得到了来自其中一个数据库的数据,但不是所有数据库中的数据。我还想提一下,这两个数据库的记录从1开始,因为它们是自动生成的。您是否认为有一种方法可以合并这两个数据库而不会丢失任何数据?
答案 0 :(得分:9)
使用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框可以在ATM上进行测试
type schema.sql database1.sql database2.sql | mysql -uroot -p -Ddatabase3
答案 1 :(得分:2)
SQL-Hub(http://sql-hub.com)允许您将具有相同模式的多个数据库合并到一个数据库中。有一个免费许可证允许您从UI执行此操作,但如果您希望安排该过程自动运行,则可能需要为许可证付费。对于具有2个数据库的一次性任务,您应该能够使用免费许可证执行此操作。