kettle之mongo输出

TransMeta transMeta = new TransMeta();
transMeta.setName(name);
DatabaseMeta from = transToDatabaseMeta(f);
DatabaseMeta to = new DatabaseMeta();
to.setDBPort(t.getPort());
to.setHostname(t.getHost());
to.setDBName(t.getDb());
to.setUsername(t.getUser());
to.setPassword(t.getPass());



transMeta.addDatabase(from);
transMeta.addDatabase(to);


PluginRegistry registry = PluginRegistry.getInstance();


TableInputMeta input = new TableInputMeta();
input.setDatabaseMeta(transMeta.findDatabase(f.getName()));

input.setSQL(trDTO.getSql());

 



String tableInputPluginId = registry.getPluginId(StepPluginType.class, input);
StepMeta firstStep = new StepMeta(tableInputPluginId, "tableInput", input);
transMeta.addStep(firstStep);


// ------------
SelectValuesMeta select = new SelectValuesMeta();
select.allocate(0, 0, fileds.length);
select.setSelectName(fileds);

//数据类型转换
for (int i = 0; i < fileds.length; i++) {
if (select.getMeta()[i] == null) {
select.getMeta()[i] = new SelectMetadataChange(select);
}

if (filedsType[i].equals("float")) {
select.getMeta()[i].setType("Number");
select.getMeta()[i].setLength(20);
select.getMeta()[i].setPrecision(8);
} else if (filedsType[i].equals("date")) {
select.getMeta()[i].setType("date");
}


select.getMeta()[i].setName(fileds[i]);
select.getMeta()[i].setRename(fileds[i]);
}


String selectValuePluginId = registry.getPluginId(StepPluginType.class, select);
StepMeta secondStep = new StepMeta(selectValuePluginId, "set values", select);
transMeta.addStep(secondStep);
// ----------


MongoDbOutputMeta output = new MongoDbOutputMeta();
output.setDbName(t.getDb());
output.setCollection(trDTO.getTableName());

// if(){//清空mongo中中集合的文档
// output.setTruncate(true);
// }
//这里选择的更新方式是,如果没有的话则插入,有的话则更新
if(trDTO.getIsUpSert()){//如果需要更新的话
output.setUpsert(true);
}
//创建索引 
// String[] Indexs = trDTO.getIndexs().split("\\+");
// String[] IndexOpp = trDTO.getIndexsOpp().split(",");
// 
// List<MongoIndex> mongoIndexes = new ArrayList<MongoIndex>() ;
// 
// if(Indexs.length==IndexOpp.length){
// for(int i=0;i<Indexs.length;i++){
// MongoIndex mgIndex = new MongoIndex(); 
// 
// mgIndex.m_drop = false;
// mgIndex.m_pathToFields = Indexs[i];
// mgIndex.m_unique= Boolean.getBoolean(IndexOpp[i]);
// mongoIndexes.add(mgIndex);
// } 
//
// }else{//如果长度不相同的话直接抛出异常
// result.setStatus(TaskStatus.FAIL.getValue());
// updateDetail(result);
// return result;
// }


// output.setMongoIndexes(mongoIndexes );

//设置认证
output.setPort(t.getPort());
output.setHostnames(t.getHost());
output.setDbName(t.getDb());
output.setAuthenticationMechanism("SCRAM-SHA-1");
output.setAuthenticationUser(t.getUser());
output.setAuthenticationPassword(t.getPass());
output.setBatchInsertSize(String.valueOf(trDTO.getCommitSize()));
// 字段列表
List<MongoField> fieldList = new ArrayList();


for (int i = 0; i < fileds.length; i++) {
MongoField field = new MongoField();
field.m_incomingFieldName = fileds[i];
field.m_useIncomingFieldNameAsMongoFieldName = true;
fieldList.add(field);


}
output.setMongoFields(fieldList);


// 是否批量处理
if (!trDTO.isBatch()) {
output.setUpdate(false);
}



String outputId = registry.getPluginId(StepPluginType.class, output);
StepMeta thirdStep = new StepMeta(outputId, "tableOut", output);


transMeta.addStep(thirdStep);



transMeta.addTransHop(new TransHopMeta(firstStep, secondStep));
transMeta.addTransHop(new TransHopMeta(secondStep, thirdStep));
// 转换的过程中添加转换类型


String transXml = transMeta.getXML();


kettleTrans = new Trans(transMeta);
kettleTrans.setLogLevel(LogLevel.DEBUG);
//打印转换日志 

saveTranLog(transMeta,datasource);

//打印每个步骤的日志

//saveStepLog(transMeta,datasource);



          
kettleTrans.execute(null); // You can pass arguments instead of null.
kettleTrans.waitUntilFinished();

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值