# 数据迁移工具

huiche基于QuerDsl提供了一个数据迁移工具DataTransfer,它可能没有多么的智能快速,但可以方便的进行新老数据的转换,所以他的优点在于灵活(当新旧的数据结构没有什么改变或改变很少时,建议还是由其他数据导入工具进行快速导入),原理就是简单的把原有数据查询出来,然后根据mapper(自行实现),转换为新的数据然后批量插入.

# 数据迁移构造

现在默认提供3种方式构造,需要分别提供source源数据表和target目标数据库,(理论上支持大部分主流数据库,但目前仅对MySql进行了大量测试)

构造参数 说明
SqlQueryFactory QueryDsl依赖的sql查询工厂
DataSource 数据源连接池
url/user/pwd jdbc连接的url,用户名,密码

# 数据迁移

构造DataTransfer之后,即可执行transfer进行数据迁移,它提供了多个重载以方便使用,下面仅对全部参数的方法进行介绍

public class DataTransfer{
/**
     * @param srcTablePath      源表 path
     * @param srcQueryPredicate 源表过滤条件
     * @param targetTablePath   目标表 path
     * @param mapper            数据转换mapper
     * @param size              每次处理多少条数据
     * @param <S>               源类型
     * @param <T>               目标类型
     */
    public <S, T> void transfer(
        RelationalPath<S> srcTablePath, 
        Predicate srcQueryPredicate, 
        RelationalPath<T> targetTablePath, 
        Function<S, T> mapper, 
        int size) {
    }
}