这可能听起来像一个愚蠢的问题,但在谷歌上找不到任何东西,可能使用了错误的关键词。在不重新创建MySQL表的情况下恢复数据
无论如何,我一直在研究一个项目 - 版本1,它有一个MySQL数据库。我准备发布到版本2,但数据库表格有变化,例如额外的列。
如果我用数据备份当前数据库并使用新结构创建数据库。我如何将旧数据库中的数据添加到新数据库中。
我知道现有的数据被添加到新的数据库结构中没有任何问题,因为现有的字段没有改变,只是额外的列。
感谢您的帮助。
这可能听起来像一个愚蠢的问题,但在谷歌上找不到任何东西,可能使用了错误的关键词。在不重新创建MySQL表的情况下恢复数据
无论如何,我一直在研究一个项目 - 版本1,它有一个MySQL数据库。我准备发布到版本2,但数据库表格有变化,例如额外的列。
如果我用数据备份当前数据库并使用新结构创建数据库。我如何将旧数据库中的数据添加到新数据库中。
我知道现有的数据被添加到新的数据库结构中没有任何问题,因为现有的字段没有改变,只是额外的列。
感谢您的帮助。
我在这种情况下使用mysqldump
与some addition keys,像
mysqldump --host=localhost --user=root --no-create-db --no-create-info --complete-insert --extended-insert
这将产生与列名的完整的插入,所以你可能不担心最终的表结构,如果你没有更改列名称,在这种情况下甚至可能会更改列的顺序。
考虑使用ALTER TABLE
来解决此问题。
,关键是要采取新的领域在数据库中,并把它们添加到您的实体的结束,像这样: ALTER TABLE myTable ADD COLUMN myColumn (... further specification ...)
MySQL将展开表,并设置新的字段到您指定的默认值。正如您所描述的,只要没有冲突,您就可以将任何新数据覆盖在旧数据之上。
选择B,当在线解决方案昂贵时,使用mysqldump,然后更改输出以适应新的表格规范。只要列对齐正确(在最糟糕的情况下,这可能需要一个简单的正则表达式来解析),您应该可以通过importing将数据重新创建到新模式中。
另请参阅,this answer。
请解释! – hjpotter92 2012-03-22 21:39:12
这将涉及通过每个单一表并添加所有更改以匹配开发机器。我正在寻找更简单的1步解决方案。即恢复新的数据库结构并从旧数据库导入现有数据 – Boardy 2012-03-22 21:41:49
@Boardy我会更新我的答案。支持。 – MrGomez 2012-03-22 21:42:59
使用PHP – hjpotter92 2012-03-22 21:37:50
会更容易,您为什么需要重新创建数据库?为什么不把这些列添加到现有字段中,如下所述。 – Robert 2012-03-22 21:41:20