数据库结构变更如何优雅的导入数据

旧库数据较多,但是结构不好,设计了新的数据库结构,将一些表合并,一些表分拆,如何有较好的方式把旧库数据导入到新库。

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
讨论数量: 6
Summer

能想到的,只能是很暴力的写个命令,然后一点点挪到新表中

7年前 评论

没有什么好的方式。数据和需求是个性的,需要写程序一点一点对应起来导入了。

7年前 评论
Ryan

我一般都是写个atrisan 命令做一下各个表的数据迁移

7年前 评论
monkey

这种涉及到业务逻辑的变更的修改,只能一对一的进行迁移。

使用 artisan 命令将每张数据表做定点迁移吧。

7年前 评论
lijinma

我还确实有过这样的经历。

如果数据少,随便弄弄,写个 artisan 指令就可以了,如果数据多呢?几千万?几亿?我给点思路,你看看:

  1. 使用 artisan 写命令来处理,多进程来跑,怎么分配每个进程跑的数据需要你考虑,进程通过什么控制也需要你考虑。

  2. 导出数据的sql,处理 sql 满足新的表格,切分 sql 为多个文件,多个进程来 source sql。

1如果你使用 limit 进行分页,一定要注意 limit 的性能问题,这个搜一搜应该有很多解决方案。
2肯定比1效率高,因为没有中间资源的消耗,但是要看你的逻辑。

7年前 评论
lijinma

确实遇见过导数据到了一晚上没导完,第二天上班?

7年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!