这可能听起来像一个愚蠢的问题,但在谷歌上找不到任何东西,可能使用了错误的关键词。
无论如何,我一直在研究一个项目 - 版本1,它有一个MySQL数据库。我准备发布到版本2,但数据库表有更改,例如额外的列。
如果我使用数据备份当前数据库并使用新结构创建数据库。如何将旧数据库中的数据添加到新数据库中。
我知道将现有数据添加到新数据库结构不会有任何问题,因为现有字段没有更改,只是额外的列。
感谢您的帮助。
答案 0 :(得分:1)
考虑使用ALTER TABLE
来解决此问题。
关键是获取数据库中的新字段并将它们附加到实体的末尾,如下所示:
ALTER TABLE myTable ADD COLUMN myColumn (... further specification ...)
MySQL将扩展表并将新字段设置为您指定的默认值。然后,只要没有冲突,您就可以将旧数据叠加在旧数据之上。
选项B,当在线解决方案很昂贵时,是使用mysqldump,然后改变输出以适应新的表规范。只要列正确对齐(这可能需要一个简单的正则表达式来解析,在最坏的情况下),您应该能够通过importing将数据重新创建到新模式中。
另见this answer。
答案 1 :(得分:1)
在这种情况下我使用mysqldump
和some addition keys,类似
mysqldump --host=localhost --user=root --no-create-db --no-create-info --complete-insert --extended-insert
这将产生带有列名的完整插入,因此如果你没有更改列名,你可能不担心最终的表结构,即使列的顺序可能会改变情况下。