文件名称:跨数据库数据迁移
文件大小:61KB
文件格式:JAR
更新时间:2021-01-11 04:02:45
数据迁移 跨数据库 数据库
/**
* 源数据库库连接池配置
*
*/
ConnPoolConfig config = new ConnPoolConfig();
config.setMaxPoolSize(30);
config.setInitialPoolSize(20);
config.setUrl("jdbc:sqlserver://192.168.0.222;databaseName=ciems");
config.setDriverClass("com.microsoft.sqlserver.jdbc.SQLServerDriver");
config.setUsername("sa");
config.setPassword("Password2017");
/**
* 源库
* "queryDB" DBManager的自定义名称
* config 连接池配置
*/
DBManager queryDb = new DBManager("queryDB",config);
/**
* 目标数据库连接池配置
*
*/
ConnPoolConfig tarconfig = new ConnPoolConfig();
tarconfig.setMaxPoolSize(30);
tarconfig.setInitialPoolSize(20);
tarconfig.setDriverClass("com.mysql.jdbc.Driver");
tarconfig.setUrl("jdbc:mysql://localhost:3306/datatransfer?useUnicode=true&characterEncoding=UTF8&useSSL=true");
tarconfig.setPassword("accp");
tarconfig.setUsername("root");
/**
* 目标库
*/
DBManager insertDb = new DBManager("insertDB",config);
/**
*做数据导入处理时的接口
*
*/
InsertHandler handler = new DBInsertHandlerImpl("t_big_data",null,insertDb);
/**
* 迁移任务的配置,配置关键信息项
*/
ApplicationConfig apConfig = new ApplicationConfig("t_big_data");
apConfig.setQueryThreadNum(8); //指定查询线程数量,不指定默认为8
apConfig.setDataNum(5000); //设置每次从源库中抽取的数量 不指定默认为5000
/**
* 源表的匹配条件
* 如果希望源表中符合条件的才迁移,请配置此项,禁止加where,请按照以下格式
*/
apConfig.setConditionSql("0=0");
/**
* 入库方式
* **
* 增量入库 ZLRK, (暂未实现)
* 追加入库 ZJRK, (目标库有源表结构的基础上,增加源表的所有数据到目标库中)
* 刷新入库 SXRK, (删除目标库的源表结构,自动创建并导入数据)
* 更新入库 GXRK (暂未实现)
* **
*/
apConfig.setInsertType(InsertType.SXRK);
/**
* 日志线程,开启时可更直观的从标准输出流里观察到运行状态,不指定默认关闭
*/
apConfig.setOpenLogThread(true);
/**
* 生命周期接口,线程不完全
* 分别有以下几个生命周期方法
* createTableDone() 目标库被创建表结构时调用一次
* queryDone(boolean result, int start, int end, long time,Throwable e)
* 有数据从源表中查询到数据时被调用,直到任务完成
* result 查询结果
* start 查询起始行
* end 查询结束行
* time 共耗时 单位:ms
* e 查询失败时抛出的异常
* insertDone(boolean result, int num, int errorNum, long time,Throwable e)
* 有数据导入到目的库时被调用,直到任务完成
* result 导入结果
* num 导入总数量
* errorNum异常数量
* e 导入失败时抛出的异常
* taskDone(int all, int doneNum, int errorNum, long time,List