Data

20 mai, 2019

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

Publicidade

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!