DataARTIGO

Node.js: importando dados de um arquivo .csv para o MongoDB

Neste artigo, Thiago Adriano usa Game of Thrones como referência para mostrar como importar dados de um arquivo .csv para o MongoDB.

Node.js: importando dados de um arquivo .csv para o MongoDB
Imagem: Thiago Adriano

Quem nunca precisou abrir arquivo para importar os dados para uma base de dados? Esse é um processo simples, mas que ajuda muito outras equipes, como: RH, financeiro, etc.

Neste artigo mostrarei como importar dados de um arquivo .csv com algumas das batalhas que ocorreram na série Game of Thrones, utilizando o Node.js e uma base de dados MongoDB.

Para pular a etapa de criação de um novo projeto, eu irei utilizar a versão final deste artigo. Caso tenha interesse em clonar esse projeto, acesse meu GitHub: node-csv-mongodb.

O projeto está bem simples. Abaixo você tem uma breve explicação de cada um dos arquivos utilizados.

Estrutura do projeto

Analisando ela, nós temos:

  • config/db: arquivo de conexão com a nossa base de dados
  • models/battles.js: model contendo os campos do arquivo .csv
  • repository/battleRepository: arquivo de mapeamento da model com a collection do banco de dados
  • battles.csv: arquivo contendo algumas das batalhas que ocorreram em Game of Thrones
  • index.js: iremos explorar esse arquivo melhor, mas por ora ele é o responsável por abrir o arquivo .csv e importar os dados para o nosso banco de dados

Abra o projeto no seu editor de textos preferido, e em seguida adicione a sua string de conexão no arquivo db.js. Com essa etapa concluída vamos analisar o arquivo index.js:

const db = require('./config/db');
const battleRepository = require('./repository/battleRepository');

const csv = require('csv-parser');
const fs = require('fs');

fs.createReadStream('./battles.csv')
    .pipe(csv())
    .on('data', (row) => {
        battleRepository.create(row);
    })
    .on('end', () => {
        console.log('CSV file successfully processed')
    });

Analisando esse trecho de código, nós temos:

  • 01: estamos importando o arquivo db.js com a nossa conexão com o db
  • 02: estamos importando o nosso repository, ele será responsável pelas nossas queries.
  • 04 e 05: importando os pacotes (fs) e (csv-parser) para manipularmos o arquivo .csv
  • 07 até a 14: estamos passando o caminho do arquivo que iremos manipular, abrindo ele e passando os dados para o método .create do nosso repository para ele salvar os dados no db. Assim que ele finalizar, retornará a mensagem: ‘CSV file successfully processed’

Para ficar mais clara essa etapa, comente a linha 11 do arquivo e adicione um console.log(row); no lugar. Em seguida, execute o comando node index.js.

Abaixo você tem uma imagem demonstrando esse passo:

Node.js importando dados de um arquivo .csv

Note que ele passa por cada uma das linhas do arquivo e retorna cada uma deles na row. Agora descomente a linha 11 e execute o comando node index.js novamente.

Para verificar se os dados foram importados corretamente, eu irei utilizar o Robo 3T para conectar na minha base de dados. Abaixo você tem uma imagem demonstrando esse passo:

Batalhas GOT no MongoDB

Note que todos os arquivos formam importados corretamente.

A ideia era que este artigo fosse rápido, para demonstrar como importar um arquivo .csv em um banco de dados MongoDB.

Espero que tenham gostado e até um próximo artigo, pessoal!

Thiago AdrianoAutor

Microsoft (MVP), atualmente trabalha como Arquiteto de Software para TV Bandeirantes. Nesses últimos anos, focou nas tecnologias criadas pela Microsoft, mas sempre esteve antenado para as novas tecnologias que estão surgindo no mercado. Em um breve resumo, é uma pessoa apaixonada pelo que faz, tem a sua profissão como hobby.

Ver perfil