sábado, 3 de maio de 2014

Neste post vou mostrar como carregar documentos em uma collection MongoDB. O design da interface se parece com todas as outras interfaces ODI, mas nos bastidores o KM configurado no projeto físico utiliza o MongoDB SDK (veja aqui MongoDB SDK) para inserir os documentos. O armazenamento de dados alvo abaixo representa um documento MongoDB, as colunas são as chaves no documento. Cada linha é inserida como um documento e cada coluna é uma chave, o valor da coluna é o valor. O valor ENAME abaixo é apresentada como um valor JSON complexo.

odi_load_mongodb

 

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;

  1. import com.mongodb.*

  2. MongoClient mongoClient = new MongoClient(" <%=odiRef.getOption("MONGO_SERVER")%> ", <%=odiRef.getOption("MONGO_PORT")%> );

  3. DB db = mongoClient.getDB("<%=odiRef.getOption("MONGODB")%>");

  4. DBCollection coll = db.getCollection("<%=odiRef.getOption("MONGOCOLL")%>")

  5. BasicDBObject doc = new BasicDBObject();

  6. <%=odiRef.getColList(" ", "doc.put(\u0022[COL_NAME]\u0022, \u0022#[CX_COL_NAME]\u0022);", " \n ", "", "((INS and !TRG) and REW)")%>

  7. 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;




  1. import com.mongodb.*

  2. MongoClient mongoClient = new MongoClient("DALLAN-SVR", 27017);

  3. DB db = mongoClient.getDB("test");

  4. DBCollection coll = db.getCollection("testCollection")

  5. BasicDBObject doc = new BasicDBObject();

  6. doc.put("EMPNO", "#EMPNO");

  7. doc.put("ENAME", "#ENAME");

  8. doc.put("JOB", "#JOB");

  9. doc.put("MGR", "#MGR");

  10. doc.put("HIREDATE", "#HIREDATE");

  11. doc.put("SAL", "#SAL");

  12. doc.put("COMM", "#COMM");

  13. doc.put("DEPTNO", "#DEPTNO");

  14. 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

Blog Archive

SmarttNet Solution Provider. Tecnologia do Blogger.

Postagens populares

Twitter MongoDBBrazil

Total de visualizações de página