Monday, August 15, 2011

Base de Dados de CEP em MySQL, PostgreSQL e Dicas Adicionais

NOTE:
English is the usual language here on the purpose to increase sharing possibilities once it is an international language, however the information here is just about some specific brazilean stuff - the CEP, our USPC, so it was written in the native language.

Por esses dias andei precisando criar massa de dados em vários bancos com o propósito de testar performance e funcionalidades de uma aplicação. Quando esbarrei com a necessidade de carregar as tabelas de dados de CEP, naveguei a Internet por um longo período, encontrando todo tipo de informação menos o que eu realmente precisava - a base de dados do CEP.
Uma nota de indignação geral foi comum na maioria dos sítios(sites), reclamando o direito de obter-se o material de domínio público.
Afinal, o CEP até 2000, ainda era cedido sem restrições, posteriormente perdendo tal característica quando alterou o nome para DNE - Diretório Nacional de Endereços, segundo informação encontrada em http://www.vextenso.com.br/blog/55/banco-de-dados-com-os-ceps-do-brasil-retrocesso.html

Finalmente, em uma segunda tentativa inconformada, encontrei a informação necessária em http://republicavirtual.com.br/cep/index.php, cujo download fica  aqui.

Eu gostaria de agradecer o gesto do colega e o ótimo trabalho, tomando a liberdade de multiplicar tal gesto fazendo referência também aqui, no blog, e adicionando uma versão alternativa para PostgreSQL e MySQL.

Você pode encontrar os arquivos no link abaixo, já que aqueles que foram postados na nuvem sempre acabavam deletados.

https://ultering.com/it4us/Base de dados


DICAS

1. Disponibilizei um link alternativo dessa base original em MySQL(cep_mysql_sql.7z), com a alteração a seguir:
 `tp_logradouro` varchar(20) DEFAULT NULL,
foi alterado para
 `tp_logradouro` varchar(30) DEFAULT NULL,
devido a mensagem de erro ocasionado por campo maior em uma das tabelas.
O restante funcionou perfeitamente.

2. A versão em PostgreSQL foi dividida em arquivos menores e as linhas longas  foram quebradas em linhas menores, uma por registro.

Se o link estiver quebrado ou indisponível, mande um email para (alsdias@yahoo.com.br).

Essa alteração tem dois objetivos:
a) facilitar a edição do arquivo pois do contrário o editor fica pesado, lento.
b) facilitar também a localização de erros em eventuais mensagens de erro geradas pelo compilador do SGDB, pois percorrer um registro por linha é mais prático do que super extensas linhas, além de deixar o editor mais leve.


Se desejar, você pode executar as partes como se fossem um único arquivo criando um script que as referencie. É uma operação simples de inclusão de caminhos (paths).


Alternativa à Atualizaçao da Base de Dados

Em muitos sites encontrei a reclamação da dificuldade de atualizar a base pois o arquivo mdb estaria criptografado e só permite consultas manuais pela interface.

Nem tanto, você pode decodificar o arquivo mdb fazendo uma leitura binária e ter acesso à informação. Depois é só utilizar o famoso Ctrl+F (find) do seu editor, e lá está o que você deseja. Depois é só Ctrl+C e Ctrl+V.

O executável é um pequeno aplicativo em C(BinReader.tar.gz)  que faz este serviço para que se possa atualizar a base.

Basta digitar "BinReader.exe path_do_mdb".
O pequeno programa, embora simples, vai gerar um arquivo texto de leitura direta, apesar de "sujo", mas a informação pertinente é legível.

É um código simples, criado rapidamente para atender consultas que ficariam exclusivas pela interface gráfica, mas que transformadas em texto podem ser percorridas também por qualquer programa, ou manualmente, colhendo-se a informação complementar desejada.

NOTA:
Se houver link quebrado, mande um email para (alsdias@yahoo.com.br).


5 comments:

  1. Os links para download da base de dados para postgresql estão quebrados, pode disponibilizar outros?

    ReplyDelete
    Replies
    1. Já concertei os links diversas vezes, testando vários hostings diferentes.
      Logo ficam quebrados.
      A quem precisar, posso remeter por email: alsdias@yahoo.com.br

      Delete
  2. Gostaria de saber de qual data seria essa base de dados, pois tenho uma coisa que não lembro de que ano era, mas o tamanho é bem diferente da sua, eu mesmo converti para sql e está com 49,9 tem quase 800mil ceps.

    ReplyDelete
  3. É do mesmo ano da fonte em mysql (2005), em http://republicavirtual.com.br/cep/index.php
    Ele foi apenas convertido para postgres.
    Foi publicado para ser utilizado apenas como suporte a desenvolvimento e teste.
    Comercialmente, utilize a fonte oficial que é atualizada.


    ReplyDelete

eclipse: java: SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder" or Exception in thread "main" java.lang.NoClassDefFoundError: org/slf4j/impl/StaticLoggerBinder

  >PROBLEM Using Eclipse, you try to run a simple logging test using "org.slf4j.Logger" like the sample below: package Test; im...