cuducos / minha-receita

🏢 Sua API web para consulta de informações do CNPJ da Receita Federal
https://minhareceita.org
MIT License
1.32k stars 132 forks source link

É possível, por exemplo, baixar dois CSVs com a base inteira da Receita? #119

Closed cuducos closed 2 years ago

cuducos commented 2 years ago

É possível, por exemplo, baixar dois CSVs com a base inteira da Receita? Assim: 1 - Um CSV com um CNPJ por linha, com dados básicos da empresa - com key o CNPJ

2 - Um CSV com os sócios de cada empresa em cada linha, então o mesmo CNPJ pode se repetir nas linhas - depende do número de sócios. Aqui as chaves seriam o CNPJ, mas também depois para orientação o nome completo dos sócios e o CPF mascarado

Originally posted by @reichaves in https://github.com/cuducos/minha-receita/issues/118#issuecomment-1058486899

cuducos commented 2 years ago

Atualmente, não.

Se você precisar pra você pode gerar isso no PostgreSQL com uma consulta mais ou menos assim:

WITH nome_da_selecao AS (
  SELECT
      id AS cnpj,
      json->>'razao_social' AS razao_social,
      json->>'nome_fantasia' AS nome_fantasia
      -- ... adicione os campos que desejar
  FROM cnpj
)
COPY nome_da_selecao
TO 'nome-do-arquivo.csv' DELIMITER ',' CSV HEADER;

Mas… está nos planos fazer essa exportação no futuro aqui (inclusive, quem tiver lendo e gostar de Go, PRs são sempre bem vindos!)

reichaves commented 2 years ago

Obrigado, vou tentar entender. Você tem a lista de todas as colunas dessa nova versão da Receita?

cuducos commented 2 years ago

Algumas opções:

cuducos commented 2 years ago

Obrigado, vou tentar entender

Vamos lá… a tabela do PostgreSQL usa um campo de JSON para armazenar a resposta. JSON não é formado de colunas fixas, por tanto você tem que maper os campos do JSON para uma coluna no SQL — e daí exportar o arquivo.

Esse mapeamento você pode testar com algo assim:

SELECT
    id AS cnpj,
    json->>'razao_social' AS razao_social,
    json->>'nome_fantasia' AS nome_fantasia

Que resulta em algo como (utilizando imagem pois acho que fica mais didático o mapeamento em colunas):

image

cuducos commented 2 years ago

Tenho pensando muito nessa issue e quase fechando ela. O que tenho pensando é:

Talvez, no máximo… juntar os CSVs da Receita por tipo… isso teria algum caso de uso?

reichaves commented 2 years ago

Olá Cuducos Obrigado O Minha Receita é genial, mas infelizmente para mim demanda uma curva de aprendizado longa - teria que aprender muita coisa nova que não tenho tempo agora por causa da urgência de outros trabalhos Por isso perguntei dos CSVs - eu acabei baixando e já usando eles Mas a lógica que precisei era essa: 1 - Usar o CSV de sócios para procurar todos 'nome_socio' e 'cnpj_cpf_socio' que existem em outra base de dados com essas informações - gero um recorte dos sócios da Receita 2 - Com esse resultado pegar as informações do CSV de empresas básico, pelo 'cnpj_basico' 3 - Depois pegar no CSV estabelecimentos mais informações, por cada 'cnpj' 4 - Completar todos os outros sócios que existem em cada 'cnpj', de novo CSV de sócios

Em qua., 30 de mar. de 2022 às 16:07, Eduardo Cuducos < @.***> escreveu:

Tenho pensando muito nessa issue e quase fechando ela. O que tenho pensando é:

  • os arquivos da Receita já são em CSV
  • o critério para juntar, por exemplo, em dois CSVs é super subjetivo:
    • quais seriam esses dois CSVs? E porquê?
    • pq não 3 CSVs como era antes (CNPJs, sócios, CNAEs)
    • pq não 4 e incluirmos os códigos do IBGE?
    • etc…

Talvez, no máximo… juntar os CSVs da Receita por tipo… isso teria algum caso de uso?

— Reply to this email directly, view it on GitHub https://github.com/cuducos/minha-receita/issues/119#issuecomment-1083518322, or unsubscribe https://github.com/notifications/unsubscribe-auth/AFU2QCXHZVFONW5KHOKWAATVCSQ5FANCNFSM5P3WREEA . You are receiving this because you were mentioned.Message ID: @.***>

cuducos commented 2 years ago

Por isso perguntei dos CSVs - eu acabei baixando e já usando eles

Acho que isso meio que confirma que como os dados estão em CSV, esse pacote não precisa se preocupar tanto com isso agora… confere?