Importando dados de um arquivo xlsx para o banco de dados relacional com NodeJs
Quem nunca se viu obrigado a trabalhar com dados de uma planilha de excel, não é mesmo ?
Volta e meia, precisamos importar dados das mais diversas fontes, seja txt, pdf ou planilhas de Excel (caso que veremos hoje). Se é isso que procuras, este post vai lhe ajudar.
O que precisamos? Conhecimento básico sobre o ecossistema javascript, mais especificamente, sobre nodeJs.
Ferramentas que vão nos ajudar:
- NodeJs e Npm
- node-xlsx → Pacote que será responsável por ler o arquivo xlsx (excel)
- knex → Um SQL Query Builder, responsável pela comunicação com o banco de dados.
- dotenv → Pacote onde armazenaremos algumas variáveis de ambiente (dados de acesso ao banco)
No final do post, deixarei um link a estrutura básica deste projeto, para que você baixe e comece já com um boilerplate (caso necessário).
Inicialização do projeto e instalação dos pacotes
- Crie uma pasta nova, neste caso chamaremos de xlsx-extract
$ mkdir xlsx-extract && cd xlsx-extract
2. Dê inicio ao projeto dentro desta pasta
$ npm init #preencha as informações que julgar necessário
3. Instale os seguintes pacotes:
$ npm i --save knex
$ npm i --save node-xlsx
$ npm i --sabe dotenv#escolha abaixo APENAS UM código relativo ao seu banco e faça a instalação do pacote:$ npm install pg
$ npm install sqlite3
$ npm install mysql
$ npm install mysql2
$ npm install mariasql
$ npm install strong-oracle
$ npm install oracle
$ npm install mssql
Entendo o Knex e configurando o acesso ao banco de dados
Muitas vezes nossa Stack não permite trabalharmos com mongoDB, e acabamos com nosso velho e ótimo banco de dados relacional. Neste caso vamos trabalhar com exemplos do MSSQL, porém facilmente podemos trocar por qualquer outro banco.
O knex nos permite fazer queries ao banco, de maneira um pouco (bem) diferente do nosso SQL padrão, conforme podemos ver abaixo neste exemplo extremamente simples:
SQL --> SELECT * FROM TABELA_XKNEX --> knex.select().table('books')
Você vai precisar ler a documentação para compreender todo o poder do knex, mas acredite, vale a pena. Uma ótima documentação cheia de exemplos lhe aguarda :)
Configurando o acesso ao banco de dados
Dentro do boilerplate deste projeto, vamos encontrar a seguinte estrutura de configuração do banco de dados:
O importante aqui, está dentro da pasta db → config → index.js . Se você já trabalha com nodeJS, sabe da importância de não colocar seus dados de acesso diretamente no código fonte do projeto, e este é o objetivo do pacote dotenv. Lembre de alterar o client para seu driver instalado, e configurar as demais senhas no arquivo .env deste boilerplate (link no final do post).
Stop talking, show me the code …
A explicação do porque de cada código, pode ser encontrada no gist a cima e nos comentários do github do projeto. Feito isto corretamente, nossos dados já devem estar no banco!
Vale ressaltar a importância de se entender o Knex corretamente, para que o trabalho com o DB seja realmente produtivo, mesmo não se escrevendo exatamente SQL.
Github do Projeto
Sinta-se a vontade para retirar possíveis dúvidas ou deixar sugestões …