背景:新项目正式运行,已经有一些客户了,之前另一个项目的客户想转到新项目来。
需求:需要将旧项目的会员,及其会员相关的会员卡,会员标签,会员分类,会员档案等相关资料一并导入过来(为了讲述清楚,只讲这部分内容),同时要保留会员id和其它表的对应关系。
难点:如果直接将旧系统的会员导入到新系统,可能 id 会冲突,导致导入失败。
开发:
1.查了一下生产,每个门店平均大概有1w个会员
2. 领导提供的思路是,先导入一个会员,然后获取新的主键id,然后导入和这个会员相关的其它记录,更新会员id 为新的会员id。但是个人感觉这样导入太慢了。
3. 自己的实现是:
新建临时表,和会员表字段一致,
临时表新加一个字段,取名 newId.;
将旧系统的会员资料先导入到临时表,在插入的同时 根据 oracle 的 seq 序列号获取 新系统的会员id序列 放入 newId 字段;
导入会员标签,会员分类等其它表;
根据临时表记录的 旧id 和 新id 的映射关系,批量更新标签,分类表的 会员id;
将临时表的newId作为主键id,将记录导入到新系统的会员表中
删除临时表。
网上找过相关资料,说可以使用阿里的 datax ,但是我看了下,好像不太符合我们的需求,下次再补充一期 datax 的吧。