Do Excel ao SQL: Primeiros passos
Anteriormente, tínhamos o hábito e a facilidade de trabalhar com Excel qualquer tipo de informação que tivéssemos disponível. Isso fazia com que todos os registros e dados fossem copiados e armazenados em planilhas .xlsx e, portanto, era difícil compartilhá-los com outra pessoa, trabalhar neles de forma assíncrona e fazer backup das informações ali armazenadas.
Hoje, temos ferramentas que potencializam isso e permitem o backup dos dados em caso de imprevistos, além de serem acessíveis a todos, independentemente da distância e/ou de onde estejam.
A grande dificuldade que enfrentamos atualmente é que os usuários do Excel continuam aumentando e, com isso, são criados cada vez mais documentos, que começam a ser utilizados como fonte principal, tornando mais complexo o seu correto manuseio e criando uma série de problemas que impedir o desenvolvimento do trabalho sem atrito. Isso se aprofunda agora quando as equipes e as pessoas já se acostumaram, em parte, a trabalhar de forma descentralizada.
Apenas como um fato divertido, de acordo com a EarthWeb, o Excel tem atualmente cerca de 1,5 bilhão de usuários. Isso envolve muitas informações que não são armazenadas em backup, estruturadas ou vinculadas de forma alguma. Incrível!
Neste artigo vamos revisar os primeiros passos para migrar do uso do Excel para bases estruturadas onde podemos:
- Gerenciar mais informações.
- Fazer backup dos dados.
- Trabalhar de forma colaborativa com as equipes (evitando alterar o original).
- Criar e gerar relatórios de BI de forma mais inteligente, rápida e eficaz.
Normalmente, um documento do Excel se parece com isso:
É composto por planilhas e estas, por sua vez, possuem colunas que representam os atributos de cada planilha. Isso pode ser facilmente modificado ou corrompido por pessoas ao trabalhar de forma assíncrona.
Claro, você pode dizer que existe a opção de bloquear células e planilhas, evitando que sejam modificadas por pessoas não autorizadas, mas até que ponto isso pode ser feito? E se a empresa e os processos crescerem e em algum momento você esquecer de travar uma célula ou planilha no documento?
Por isso, as informações devem ser gerenciadas para que seja possível aceitar grandes quantidades de dados, que serão atualizados com frequência. Para fazer isso, devemos seguir várias etapas que serão de grande ajuda na hora de executar os processos. Principalmente, devemos:
- Educar aos usuários de negócios: Por educar, quero dizer que devemos conscientizar as pessoas da área a usar o mesmo formato/molde para armazenar as informações e salvar cada um dos dados (aqui é muito importante enfatizarmos a geração desse formato nós mesmos e explicá-lo a cada um dos envolvidos para que saibam utilizá-lo, bem como as implicações de não utilizá-lo adequadamente). Essa parte é uma das mais complicadas, pois muitas vezes você não quer mudar os processos ou a forma de fazer e, por isso, fica difícil a padronização dos processos.
- Criar e automatizar a parte de upload de informações: Para isso, é necessário saber ler o arquivo previamente preparado e determinar a forma ideal para que as informações ali encontradas sejam facilmente lidas e salvas. Nesta etapa, o que se espera é salvar as informações obtidas através dos templates em um banco de dados estruturado onde possamos executar as consultas e ter o registro das mesmas.
A seguir, faremos nosso exemplo simulando um caso da vida real:
- Usaremos o MySQL Workbench como DBMS (Database Management System). podemos baixá-lo aqui.
- Uma vez baixado o arquivo do instalador, é necessário seguir as instruções na tela para configurá-lo:
- Developer Setup.
- Executar tudo na tela.
- Root Password: Certifique-se de salvar e anotar esta senha.
- Se a configuração e os passos estiverem corretos, ao final pedirá sua senha para testar a conexão e você verá uma mensagem de configuração bem-sucedida.
- Quando já estiver configurado, precisamos fazer o processo para criar nosso banco de dados local:
- Abra o MySQL Workbench e clique na instância local: Aqui você deve entrar com o usuário root e a senha previamente definida.
- Agora você só precisa selecionar a opção create Schema.
- Depois de inserir o nome do seu esquema, clique em apply (ele pede duas vezes) e depois em Finish para executar a instrução SQL que criará seu esquema:
CREATE SCHEMA `sample_schema_jr` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci ;
- Depois de concluído, seu novo esquema aparece no lado esquerdo:
1) Uma vez que nosso esquema foi configurado, será necessário trabalhar no arquivo que será preenchido pelos Business Users. Neste caso, vamos trabalhar com a seguinte fonte de dados:
- Vamos utilizar um arquivo de um Ecommerce obtido em Kaggle:
- Neste exemplo, carregarei apenas um dos .csv:
olist_order_items_dataset.csv. - Lembre-se de que as colunas e os tipos de dados que o primeiro carregamento possui serão os usados pelo Workbench para criar a tabela por padrão. Ele pode ser alterado ou adicionado posteriormente, mas trataremos disso em outra sessão.
2) Assim que tivermos o template e tudo pronto para armazenar as informações, devemos fazer o primeiro load ao SQL, que criará nossa tabela. Para isso:
- Da clic derecho en el esquema que creamos y selecciona Data Import Wizard.
- Então criamos uma nova tabela. Por padrão, ele usa o nome do arquivo como nome da tabela (podemos alterar se quisermos).
- Em seguida, continuamos com a configuração dos campos da tabela. Aqui modificamos o formato de cada atributo e cada atributo será chamado de acordo com a coluna no .csv. Nesse caso, não modificaremos nada: deixaremos tudo conforme recomendado pelo Workbench, pois não precisaremos interagir com os dados.
- Por fim, selecionamos a seguir e veremos que começa o salvamento das informações.
- Isso pode demorar um pouco, pois é muita informação que ele armazena. No entanto, em outro artigo, escreverei sobre como fazer isso, mas a partir do terminal para fazer um Bulk Insert das informações. Assim que a importação terminar, aparecerá uma mensagem de sucesso, clicamos em Concluir e mãos à obra!
3) Agora que temos as informações, faremos algumas consultas simples para validar se tudo foi inserido corretamente. Para isso:
- Clique no botão destacado:
- Escreveremos o seguinte para contar o número total de registros que temos. Isso deve corresponder ao total do nosso csv:
select count(*) from olist_order_items_dataset;
- Analisamos 5 registros em nosso dataset para ver se as colunas e os dados foram armazenados corretamente:
Select * from olist_order_items_dataset limit 5;
- Confirmamos que nossa data min seja a correta:
select min(shipping_limit_date) from olist_order_items_dataset;
- Como a data máxima, nós a revisamos:
select max(shipping_limit_date) from olist_order_items_dataset;
- Validamos que o total dos produtos é igual ao que temos no Excel:
select sum(price) from olist_order_items_dataset;
Com tudo bom, vamos simular um upload manual do mesmo arquivo, mas como se fosse outro dia, isso com o objetivo de atualizar as informações da nossa tabela. Para isso, modificaremos as configurações SQL iniciais da seguinte forma:
- Vamos para a tela de conexões e clicamos em editar conexão:
- Em seguida, na tela Gerenciar conexões (Manage Server Connections), selecionamos a guia Advanced (debajo de Connection Method) y, en Others, agregamos OPT_LOCAL_INFILE=1:
- Fechamos a sessão SQL que havíamos aberto anteriormente e a abrimos novamente.
- Com isso, nossas alterações serão salvas e agora, para executar o upload do arquivo, vamos criar uma cópia do modelo usado anteriormente e modificar alguns campos, simulando que se trata de uma nova operação.
- Salvamos o novo arquivo e usaremos o seguinte código SQL para executar a carga:
LOAD DATA LOCAL INFILE 'C:/Users/juram/Downloads/archive/olist_order_items_dataset_2023.csv'
INTO TABLE olist_order_items_dataset
FIELDS TERMINATED BY ','
ENCLOSED BY '"'
LINES TERMINATED BY '\n'
IGNORE 1 ROWS (`order_id`, `order_item_id`, `product_id`, `seller_id`, `shipping_limit_date`, `price`, `freight_value`);
- A primeira linha é o endereço do arquivo que criamos.
- Então dizemos onde queremos inseri-lo.
- Definimos el separador de los datos.
- Alocamos um pooler para que os espaços não causem problemas.
- Dizemos que cada linha é determinada por uma nova linha.
- Ignoramos os cabeçalhos.
Depois de executá-lo, podemos validar as alterações que você fez. Por exemplo, adicionei 2 registros datados de 2023 e é assim que posso visualizá-los:
select * from
olist_order_items_dataset
order by shipping_limit_date desc;
Pronto! Terminamos. Lembre-se que esta é uma maneira simples e rápida de migrar arquivos Excel para um banco de dados estruturado, que posteriormente podemos conectar a uma ferramenta de BI e gerar relatórios com mais rapidez.
Estarei atento a qualquer dúvida.
Obrigado pela leitura!
A Revelo Content Network acolhe todas as raças, etnias, nacionalidades, credos, gêneros, orientações, pontos de vista e ideologias, desde que promovam diversidade, equidade, inclusão e crescimento na carreira dos profissionais de tecnologia.