将几乎相同的数据库导入另一个

时间:2015-02-21 11:30:32

标签: mysql

很抱歉,如果在我找不到答案之前已经询问过这个问题。

我有2个数据库,它们的结构相同,只是数据库1有一些额外的列。数据库2中的数据稍微更新一些。

所以:

数据库1在某些表中有一些额外的列。

数据库2没有这些列,但其余表中的数据更新。

所以我想将数据库2中的数据导入到数据库1中,覆盖数据库1中的数据。但是我想保留数据库1中现有的额外列,这些列在数据库2中不存在。

Mysqldump显然会覆盖数据库1中的所有内容,这将无法正常工作。有太多的表和列让我知道额外的列在database1中的位置。所以我需要一个程序化的解决方案。

感谢您的帮助或指出我正确的方向!

2 个答案:

答案 0 :(得分:0)

尝试在phpmyadmin中导出数据,选择仅导出数据,而不是导出结构。然后将该数据导入到包含更多列的数据库中。

这显然有局限性。我假设添加的列是唯一的区别,所有非空列都有默认值,并且改进的数据库没有需要保留的数据。

这是关于我们可以在不知道确切的表结构的情况下提供的所有建议。

重要建议

将来跟踪SQL文件中的修改,您可以稍后将其应用于数据库的其他副本。通常更容易将更改(新列)应用于数据库,而不是在两个不同的数据库之间复制数据。

这些脚本通常称为迁移

答案 1 :(得分:0)

有一个名为SQLYog的工具可以完成您想要的任务。它具有区分和同步两个不同数据库模式的能力。我倾向于做的是这样的事情:

  • 转储数据库1并导入新数据库3。
  • 转储数据库3并导入新数据库4。
  • 使用sqlyog将数据库3架构转换到数据库顶部4.修复所有错误并在必要时重复。
  • 数据库4现在是您的新数据库,其架构为1,理论上大部分数据来自2.查看它是否符合您的要求,否则请将其废弃,修复任何问题并重新开始。