两个系统之间怎么进行数据的迁移

需求

把老系统的数据有选择性的移入新系统。

描述

新系统中这个表的字段少于老系统,不过老系统都包括其中,字段的名字可能不一样,但是字段所储存的意思是一样的。
我现在要做的是把老系统中数据对应的迁移到新系统中,大概有几百万条数据。

想法

本来想写一个接口把数据都返回过去再进行储存,不过想想好像不太行。各位有什么思路提供一下嘛,万分感谢:flushed:

《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
《G01 Go 实战入门》
从零开始带你一步步开发一个 Go 博客项目,让你在最短的时间内学会使用 Go 进行编码。项目结构很大程度上参考了 Laravel。
最佳答案
        $old = config('database.connections.mysql');
        $old['database'] = 'home_old'; //  伪造一个旧的数据库配置

        //  相当于在 config/database.php添加一个 'old' 的配置
        app('config')->set('database.connections.old',$old); 

        DB::connection('old')->table('users')->chunk(100, function ($old_users){
           foreach($old_users as $old_users) 
           DB::table('users')-> // ... 新数据库逻辑操作
        });
2年前 评论
daxin001 2年前
讨论数量: 16

两种方案:1.全量同步,2.增量同步

2年前 评论
dustFF (楼主) 2年前
PHPer技术栈 (作者) 2年前

用最新版的 Navicat,上面菜单有个工具,有数据传输,数据同步,结构同步。

2年前 评论
dustFF (楼主) 2年前
        $old = config('database.connections.mysql');
        $old['database'] = 'home_old'; //  伪造一个旧的数据库配置

        //  相当于在 config/database.php添加一个 'old' 的配置
        app('config')->set('database.connections.old',$old); 

        DB::connection('old')->table('users')->chunk(100, function ($old_users){
           foreach($old_users as $old_users) 
           DB::table('users')-> // ... 新数据库逻辑操作
        });
2年前 评论
daxin001 2年前

既然老表包含新表,直接复制一份老表对着新表字段改不就ok了; 数据要实时的话就凌晨或者找没人用的时候全量同步一下;

2年前 评论
dustFF (楼主) 2年前
zongscan (作者) 2年前
dustFF (楼主) 2年前

用PHP写个同步脚本呗

2年前 评论

试试这个思路,从 SELECT 结果中创建新表,字段别名是新表中的字段,如果新表字段与老表字段相同则不需要给字段起别名。如果全量复制则不需要 WHERE。

不同数据库导出导入会吧。

CREATE TABLE IF NOT EXISTS table_name
SELECT 字段1 别名,字段2 别名......FROM database_name.table_name WHERE......

如果表已存在。

INSERT INTO table_name(字段1,字段2......) SELECT 字段1,字段2...... FROM database_name.table_name WHERE......
2年前 评论
pardon110

写脚本

2年前 评论

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