Utilitário em Python para carregar a base completa de CNPJ disponibilizada pela Receita Federal (aprox. 85 GB) e transformá-la em arquivos csv ou sqlite para fácil consumo. Processa dados de empresas, sócios e CNAEs.
Para executar o script, é necessário que seu sistema contenha essas instalações:
Versão mais atual, caso não consiga executar usando somente o comando python
. Para isso, execute no terminal (se estiver usando sistemas GNU/Linux derivados do Debian):
$ sudo apt upgrade python3
A versão mais atual. Se estiver usando Python3:
$ python3 -m pip install --upgrade pip
A versão mais atual da biblioteca Pandas para Python. Para instalar via Pip:
$ python3 -m pip install pandas
A princípio, não é necessário. O script neste repositório usa funções da biblioteca Pandas, que utiliza uma extensão de NumPy chamada NumExpr. Então, caso seu terminal retorne erros por ausência do pacote NumPy, esse é o motivo. Para instalá-lo (se precisar):
$ python3 -m pip install numpy
O Pandas usa. É uma extensão que melhora a velocidade de análise no pacote NumPy. Para instalar a versão mais atual da NumExpr:
$ python3 -m pip install numexpr
Atente para o fato de que o arquivo de dados disponibilizado pela RF é muito grande. São aprox. 85 GB de arquivo texto descomprimido. Portanto, é bastante provável que seu computador dedique tempo considerável a essa execução, algo em torno de 2 ou 3 horas.
O script informa no terminal o parcial do processamento, mostrando o "bloco" (conjunto parcial) de linhas que está sendo convertido. Cada bloco contempla 100.000 linhas (registros) da base de dados.
Tabela | Tamanho do arquivo | Quantidade de linhas |
---|---|---|
Empresas | Aprox. 12gb | 40.184.161 |
CNAES secundárias | 1,18gb | 45.321.058 * |
Sócios | 1,71gb | 18.613.392 |
* Observar que esta quantidade de linhas não corresponde ao número de linhas referentes a CNAEs secundários no arquivo original, uma vez que no original todos os CNAEs secundários de uma determinada empresa estão na mesma linha, enquanto na versão convertida é gerada uma linha para cada CNAE secundário associado à empresa.
python cnpj.py <arquivo original> <tipo de saída:csv ou sqlite> <pasta saída>
ou, no python3:
python3 cnpj.py <arquivo original> <tipo de saída:csv ou sqlite> <pasta saída>
python cnpj.py "data\F.K032001K.D90308" sqlite "data"
ou, no python3:
python3 cnpj.py "data\F.K032001K.D90308" sqlite "data"