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

Erro ao criar o JSON #223

Closed paulopwm closed 6 months ago

paulopwm commented 6 months ago

Olá, primeiramente parabéns pelo projeto!

Já usei várias vezes para baixar a base, mas após as últimas alterações está dando esse erro:

`Creating the JSON data for each CNPJ 0% | | (0/60267819, 0 it/hr) [0s:0s]panic: send on closed channel

goroutine 90099308 [running]: github.com/cuducos/minha-receita/transform.(venuesTask).produceRows.func1(0xc001cffd40, 0xc01b25c000?) /srv/minha-receita/transform/venues.go:74 +0x72 created by github.com/cuducos/minha-receita/transform.(venuesTask).produceRows /srv/minha-receita/transform/venues.go:56 +0x3b panic: send on closed channel

goroutine 90099306 [running]: github.com/cuducos/minha-receita/transform.(venuesTask).produceRows.func1(0xc001cffd40, 0xc01b25c000?) /srv/minha-receita/transform/venues.go:74 +0x72 created by github.com/cuducos/minha-receita/transform.(venuesTask).produceRows /srv/minha-receita/transform/venues.go:56 +0x3b`

comando utilizado: minha-receita transform --directory /srv/minha-receita/data/

cuducos commented 6 months ago

Faltam detalhes para eu conseguir te ajudar.

Talvez as issues #176 e #203 te ajude.

paulopwm commented 6 months ago

Desculpe esqueci de adicionar mais informações.

Seguem os detalhes:

Comandos executados:

Obs.: O banco de dados já está populado e estou tentado atualizar as informações, por isso não estou rodando com o --clean-up

cuducos commented 6 months ago

O banco de dados já está populado e estou tentado atualizar as informações

Você não vai conseguir. A coluna id tem que ser única, então vai dar conflito quando ele tenta escrever no PostgreSQL um CNPJ que já existe.

O melhor é exlcuir a base de dados e começar do zero. A opção --clean-up do comando transform faz isso automaticamente para você, se quiser.

paulopwm commented 6 months ago

Acho que seria interessante verificar se já existe e se existir substituir a informação, pois no meu caso o banco de dados não pode ficar "vazio" enquanto é feita a atualização das informações.

Mas muito obrigado. Vou rodar aqui para atualizar utilizando o clean-up.

cuducos commented 6 months ago

Acho que seria interessante verificar se já existe e se existir substituir a informação

Computacionalmente falando, um “upsert” é muito mais caro do que o carregamento em lote. Isso faria o processo do ETL saltar de 2h para dias.

Não é uma opção.

cuducos commented 6 months ago

no meu caso o banco de dados não pode ficar "vazio" enquanto é feita a atualização das informações.

No meu também não. Por isso para “atualizar” uso os passos descritos em #142

Resumo:

  1. criar novo banco de dados
  2. subir dados novos para novo banco de dados
  3. mudar a aplicação para ler do novo banco de dados
  4. jogar no lixo o banco de dados antigo

0% de downtime ; )