在不创建MySQL表的情况下恢复数据

时间:2012-03-22 21:36:45

标签: mysql

这可能听起来像一个愚蠢的问题,但在谷歌上找不到任何东西,可能使用了错误的关键词。

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

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

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

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

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

关键是获取数据库中的新字段并将它们附加到实体的末尾,如下所示: ALTER TABLE myTable ADD COLUMN myColumn (... further specification ...)

MySQL将扩展表并将新字段设置为您指定的默认值。然后,只要没有冲突,您就可以将旧数据叠加在旧数据之上。

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

另见this answer

答案 1 :(得分:1)

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

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

这将产生带有列名的完整插入,因此如果你没有更改列名,你可能担心最终的表结构,即使列的顺序可能会改变情况下。