A IKM que tenho usado é um multi-conector IKM, a fonte é uma fonte de dados SQL e destino usa um comando groovy do MongoDB. O core da IKM para inserir os documentos para a coleção tem um SQL SELECT como o comando no source e o seguinte código groovy para o comando-alvo;
- import com.mongodb.*
- MongoClient mongoClient = new MongoClient(" <%=odiRef.getOption("MONGO_SERVER")%> ", <%=odiRef.getOption("MONGO_PORT")%> );
- DB db = mongoClient.getDB("<%=odiRef.getOption("MONGODB")%>");
- DBCollection coll = db.getCollection("<%=odiRef.getOption("MONGOCOLL")%>")
- BasicDBObject doc = new BasicDBObject();
- <%=odiRef.getColList(" ", "doc.put(\u0022[COL_NAME]\u0022, \u0022#[CX_COL_NAME]\u0022);", " \n ", "", "((INS and !TRG) and REW)")%>
- coll.insert(doc);
A chamada do método odiRef.getColList acima gera código para cada coluna de destino, o código executa uma invocação doc.put para adicionar os pares de valores-chave no documento. Por exemplo, este é o código gerado e executado com base no design de interface discutido acima;
- import com.mongodb.*
- MongoClient mongoClient = new MongoClient("DALLAN-SVR", 27017);
- DB db = mongoClient.getDB("test");
- DBCollection coll = db.getCollection("testCollection")
- BasicDBObject doc = new BasicDBObject();
- doc.put("EMPNO", "#EMPNO");
- doc.put("ENAME", "#ENAME");
- doc.put("JOB", "#JOB");
- doc.put("MGR", "#MGR");
- doc.put("HIREDATE", "#HIREDATE");
- doc.put("SAL", "#SAL");
- doc.put("COMM", "#COMM");
- doc.put("DEPTNO", "#DEPTNO");
- coll.insert(doc);
Esta é uma ilustração simples de como carregar documentos para o MongoDB. Agora basta ir para o Shell do MongoDB e executar o comando db.testCollection.find () para ver todos os objetos da coleção e obter a lista de documentos, abaixo você pode ver uma prévia da execução.
- { "_id" : ObjectId("51dc3ded6c4b9a5bd07d68a6"), "EMPNO" : "7369", "ENAME" : "{ NAME : SMITH, DESCR : 22 }", "JOB" : "CLERK", "MGR" : "7902", "HIREDATE" : "1980-12-17 00:00:00.0", "SAL" : "801", "COMM" : "", "DEPTNO" : "20" }
- { "_id" : ObjectId("51dc3ded6c4b9a5bd07d68a7"), "EMPNO" : "7499", "ENAME" : "{ NAME : ALLEN, DESCR : 22 }", "JOB" : "SALESMAN", "MGR" : "7698", "HIREDATE" : "1981-02-20 00:00:00.0", "SAL" : "1601", "COMM" : "300", "DEPTNO" : "30" }
0 comentários:
Postar um comentário