terça-feira, 20 de outubro de 2009

Um banco de dados de cidades e estados

Olá pessoal!
Estou trabalhando em um pequeno projeto e nele necessito ter acesso ao nome de todas as cidades do Brasil, assim como o estado de cada uma. Depois de algumas buscas na internet eu efetivamente achei alguns bancos de dados prontos contendo tabelas com os nomes das cidades e também o estado de cada uma.
Acontece que estas bases de dados que achei possuem alguns problemas. Uma que achei tinha mais de 9000 registros de cidades, sendo que o Brasil possui oficialmente um pouco mais de 5500 cidades. E também em todas as bases que achei o formato dos dados não estava do jeito que eu queria, todos os nomes dos municípios estavam com todos os caracteres em maiúsculo e também não tinham os acentos devidos.
Pesquisando um pouco mais achei no site do IBGE uma relação com todos os municípios e seus respectivos estados do ano de 2007 (para meu caso está atualizado o bastante), os arquivos estão neste endereço. O problema é que todos estes dados estão divididos em arquivos no formato xls, sendo um arquivo para cada estado. Usando a excelente biblioteca excel_reader eu fiz um pequeno script para pegar todos os dados dos arquivos xls (somente a sigla do estado e o nome de cada cidade) e transportá-los para uma tabela do banco de dados MySQL.
Junto com os scripts tem um arquivo chamado constants.php com os seguintes parâmetros de configuração:

DATABASE_HOST => Endereço do servidor mysql.
DATABASE_USER => Usuário para acessar o servidor mysql.
DATABASE_PASS => Senha do usuário mysql.
DATABASE_NAME => Nome do banco de dados onde a tabela de cidades será criada.
CITIES_TABLE_NAME => Nome da tabela com os dados das cidades que será criada.
ID_NAME_COLUMN_NAME => Nome da coluna chave primária da tabela de cidades.
ESTATE_NAME_COLUMN_NAME => Nome da coluna com o estado de cada cidade.
CITY_NAME_COLUMN_NAME => Nome da coluna com o nome de cada cidade.

Depois de configurar estas opções de acordo com seu gosto é só rodar o arquivo main.php. Os scripts podem ser baixados aqui. Junto deles vai uma pasta chamada data que contém todos os arquivos xls do IBGE.
Aqui vai um link para uma exportação da tabela de cidades que criei usando os scripts caso você queira importar os dados diretamente. A tabela possui 5518 registros.
Novamente gostaria de falar da qualidade da bilbioteca excel_reader para ler os arquivos xls. Foi uma das duas que consegui fazer rodar mas a única que não teve problemas com uso de memória e tempo de execução.
Valeu e até a próxima.