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
A 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
Tenha em mente que essa base de dados da RF é imensa! Para executar esse script, é bastante provável que sua máquina (a não ser que seja um supercomputador) dedique bastante tempo a essa execução, podendo variar de 1 a 4 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. Ao todo, são 724 blocos processados, o que quer dizer que a base de dados da RF, na versão publicada em 23/11/2018, tem entre 72.400.000 e 72.500.000 linhas!
Esse não é o total de CNPJs cadastrado, pois além dos CNPJs o arquivo também contempla os CNAES secundários de cada CNPJ (cada CNPJ pode ter mais de um CNAE secundário), bem como os sócios.
Em suma, prepare seu computador (e seu tempo) para esperar o script ser executado.
Se possível, feche tudo que estiver fazendo e deixe-o processando apenas esse script.
Se estiver no GNU/Linux, é interessante realizar logout na interface gráfica e utilizar algumas das telas do tty (acesso usando control
+ alt
+ F1 ou outro até F6
).
Tabela | Tamanho do arquivo | Quantidade de linhas |
---|---|---|
Empresas | Aprox. 12gb | 49.238.928 |
CNAES secundárias | 1,18gb | 43.680.906 |
Sócios | 1,71gb | 18.398.543 |
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.D81106D" sqlite "data"
ou, no python3:
python3 cnpj.py "data\F.K032001K.D81106D" sqlite "data"