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.

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:

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:

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!