O Denatran publica mensalmente a estatística da frota de veículos circulate no Brasil, com várias visões, sendo que a mais detalhada é a que contém o Estado, Município, Marca/Modelo, Ano de Fabricação e Quantidade de Veículos.
Essa estatística de Janeiro de 2021 é um arquivo ZIP de 117 MB que descompactado gera um arquivo texto de 952 MB e incríveis 17.898.253 linhas. Tentei abrir o arquivo no Excel mas das quase 18 milhões de linhas, ele consegue abrir “apenas” 1.048.576 linhas.
Apelei então para o SQLite pra ler o arquivo CSV em uma tabela em memória e exportar apenas as linhas de uma marca e modelo específicos para um arquivo Excel – tudo isso levou menos de 5 minutos.
Passo a passo:
1 – Abrir o Terminal e entrar no SQLite3:
Last login: Fri Mar 5 13:25:27 on ttys000
The default interactive shell is now zsh.
Henriques-Mini:~ henriquecintra$ sqlite3
SQLite version 3.32.3 2020-06-18 14:16:19
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
2 – Mudar o modo de leitura para CSV (Comma Separated Values), mas com ponto e vírgula (;) como separador:
sqlite> .mode csv
sqlite> .separator ";"
3 – Importar o arquivo texto para uma nova tabela em memória – eu chamei a tabela de “frota”:
sqlite> .import I_Frota_por_UF_Municipio_Marca_e_Modelo_Ano_Janeiro_2021.TXT frota
4 – Verificar se a estrutura da tabela foi criada corretamente:
sqlite> .schema frota
CREATE TABLE frota(
"UF" TEXT,
"Município" TEXT,
"Marca Modelo" TEXT,
"Ano Fabricação Veículo CRV" TEXT,
"Qtd. Veículos" TEXT
);
5 – Mudar o “output” do SQLite para colunas com cabeçalho e verificar se as primeiras 10 linhas de dados estão corretas na tabela:
sqlite> .header on
sqlite> .mode column
sqlite> select * from frota limit 10;
UF Município Marca Modelo Ano Fabricação Veículo CRV Qtd. Veículos
---------- ---------- ------------ -------------------------- -------------
ACRE ACRELANDIA AGRALE/1800 1989 1.0
ACRE ACRELANDIA AGRALE/1800 1990 1.0
ACRE ACRELANDIA AGRALE/1800D 1989 1.0
ACRE ACRELANDIA AGRALE/1800D 1990 1.0
ACRE ACRELANDIA AGRALE/1800D 1993 1.0
ACRE ACRELANDIA AGRALE/6000 2005 1.0
ACRE ACRELANDIA AGRALE/6000 2008 1.0
ACRE ACRELANDIA AGRALE/6000 2010 1.0
ACRE ACRELANDIA AGRALE/7000D 1994 2.0
ACRE ACRELANDIA AGRALE/7000D 1995 1.0
6 – Contar o número total de linhas na tabela:
sqlite> select count(*) from frota;
17898252
7 – Mudar o “output” do SQLite para Excel:
sqlite> .excel
8 – Abrir (no Excel) o resultado da consulta das linhas cuja Marca seja “Peugeot” e o modelo comece com “208 GT”:
sqlite> select * from frota where "Marca Modelo" like "PEUGEOT/208 GT%";
Algumas curiosidades sobre a frota de veículos emplacados (não considera veículos que deram baixa no Denatran):
- Existem apenas 631 Peugeot 208 GT dentre os 94.790 Peugeot 208 rodando no Brasil, do total de 1.095.225 Peugeots no país;
- Tem mais veículos rodando fabricados em 2005 (2.850.701) que veículos fabricados em 2020 (2.731.092);
- O ano com maior número de veículos fabricados que continuam emplacados é 2011, com 6.051.961;
- O Brasil tem um total de 110.575.550 veículos emplacados, sendo 10.040.546 importados.