Search in sources :

Example 1 with RdbEtlService

use of com.alibaba.otter.canal.client.adapter.rdb.service.RdbEtlService in project canal by alibaba.

the class RdbAdapter method etl.

/**
 * ETL方法
 *
 * @param task 任务名, 对应配置名
 * @param params etl筛选条件
 * @return ETL结果
 */
@Override
public EtlResult etl(String task, List<String> params) {
    EtlResult etlResult = new EtlResult();
    MappingConfig config = rdbMapping.get(task);
    RdbEtlService rdbEtlService = new RdbEtlService(dataSource, config);
    if (config != null) {
        return rdbEtlService.importData(params);
    } else {
        StringBuilder resultMsg = new StringBuilder();
        boolean resSucc = true;
        for (MappingConfig configTmp : rdbMapping.values()) {
            // 取所有的destination为task的配置
            if (configTmp.getDestination().equals(task)) {
                EtlResult etlRes = rdbEtlService.importData(params);
                if (!etlRes.getSucceeded()) {
                    resSucc = false;
                    resultMsg.append(etlRes.getErrorMessage()).append("\n");
                } else {
                    resultMsg.append(etlRes.getResultMessage()).append("\n");
                }
            }
        }
        if (resultMsg.length() > 0) {
            etlResult.setSucceeded(resSucc);
            if (resSucc) {
                etlResult.setResultMessage(resultMsg.toString());
            } else {
                etlResult.setErrorMessage(resultMsg.toString());
            }
            return etlResult;
        }
    }
    etlResult.setSucceeded(false);
    etlResult.setErrorMessage("Task not found");
    return etlResult;
}
Also used : MappingConfig(com.alibaba.otter.canal.client.adapter.rdb.config.MappingConfig) EtlResult(com.alibaba.otter.canal.client.adapter.support.EtlResult) RdbEtlService(com.alibaba.otter.canal.client.adapter.rdb.service.RdbEtlService)

Aggregations

MappingConfig (com.alibaba.otter.canal.client.adapter.rdb.config.MappingConfig)1 RdbEtlService (com.alibaba.otter.canal.client.adapter.rdb.service.RdbEtlService)1 EtlResult (com.alibaba.otter.canal.client.adapter.support.EtlResult)1