2012-03-22 91 views
0

这可能听起来像一个愚蠢的问题,但在谷歌上找不到任何东西,可能使用了错误的关键词。在不重新创建MySQL表的情况下恢复数据

无论如何,我一直在研究一个项目 - 版本1,它有一个MySQL数据库。我准备发布到版本2,但数据库表格有变化,例如额外的列。

如果我用数据备份当前数据库并使用新结构创建数据库。我如何将旧数据库中的数据添加到新数据库中。

我知道现有的数据被添加到新的数据库结构中没有任何问题,因为现有的字段没有改变,只是额外的列。

感谢您的帮助。

+0

使用PHP – hjpotter92 2012-03-22 21:37:50

+0

会更容易,您为什么需要重新创建数据库?为什么不把这些列添加到现有字段中,如下所述。 – Robert 2012-03-22 21:41:20

回答

1

我在这种情况下使用mysqldumpsome addition keys,像

mysqldump --host=localhost --user=root --no-create-db --no-create-info --complete-insert --extended-insert 

这将产生与列名的完整的插入,所以你可能担心最终的表结构,如果你没有更改列名称,在这种情况下甚至可能会更改列的顺序。

1

考虑使用ALTER TABLE来解决此问题。

,关键是要采取新的领域在数据库中,并把它们添加到您的实体的结束,像这样: ALTER TABLE myTable ADD COLUMN myColumn (... further specification ...)

MySQL将展开表,并设置新的字段到您指定的默认值。正如您所描述的,只要没有冲突,您就可以将任何新数据覆盖在旧数据之上。

选择B,当在线解决方案昂贵时,使用mysqldump,然后更改输出以适应新的表格规范。只要列对齐正确(在最糟糕的情况下,这可能需要一个简单的正则表达式来解析),您应该可以通过importing将数据重新创建到新模式中。

另请参阅,this answer

+0

请解释! – hjpotter92 2012-03-22 21:39:12

+1

这将涉及通过每个单一表并添加所有更改以匹配开发机器。我正在寻找更简单的1步解决方案。即恢复新的数据库结构并从旧数据库导入现有数据 – Boardy 2012-03-22 21:41:49

+0

@Boardy我会更新我的答案。支持。 – MrGomez 2012-03-22 21:42:59

相关问题