Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

panickz

Base de Dados Codigos Postais

Recommended Posts

panickz

Boas, antes de mais já tinha reparado que existem alguns tópicos com a questão semelhante a minha no entanto a minha é ligeiramente diferente.

Eu tenho uma BD onde já tenho listado todos os Distritos, Concelhos e Freguesias elas estão relacionada entre elas, no entanto não tem códigos postais das freguesias.. Existem vários ficheiro exportáveis com isto no entanto têm as ruas e outros códigos desnecessários Eu apenas queria o código postal da freguesia e não e os indicativos ruas e coordenadas. Por uma questão de optimização e mesmo de funcionamento os TXT's existentes que encontrei não me ajudam muito. Alguém tem alguma base de dados semelhante com estes dados já inseridos ou que saiba onde os encontrar? A única forma que teria era ver 1 a 1 das 4352 Freguesias existentes o CP e inserir manualmente (O que é um bocado chato) Podia usar a dos CTT's com as ruas mas quero evitar ter a BD com lixo.

Desde já agradeço ;)

Share this post


Link to post
Share on other sites
HappyHippyHippo

e porque não fazes um parser dos ficheiros existentes para retirar somente a info que pretendes ?


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
panickz

Nunca usei de que forma poderia faze-lo? O que estava a fazer era a exportar tudo para uma Tabela com as ruas todas e ia sacas com sql distinct os codigos postais e associalos aos que tavam so que queria algo que nao desse margem para erros visto que são muitas entradas e nao consigo de forma obvio verificar se os dados batem todos certos.

De qualquer forma como posso fazer o parser (Desconheço nunca tive a necessidade de fazer o que estou a fazer) ?

EDITADO:

E também não consigo correr um explode ao file é muito grande nem ao ciclo chega....

Fatal error: Maximum execution time of 30 seconds exceeded in _ on line 7

Edited by panickz

Share this post


Link to post
Share on other sites
HappyHippyHippo

dá um link para o ficheiro que queres tratar e quais a info que queres ler


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
HappyHippyHippo

<?php
$time_start = microtime(true);

$record = null;

if (($handle = fopen("todos_cp.txt", "r")) !== FALSE) {
   while (($data = fgetcsv($handle, 0, ";")) !== FALSE) {
       if ($record == null ||
           $record['distrito']      != $data[0] ||
           $record['concelho']      != $data[1] ||
           $record['freguesia']     != $data[2] ||
           $record['codigo_postal'] != $data[14])
       {
           $record['distrito']      = $data[0];
           $record['concelho']      = $data[1];
           $record['freguesia']     = $data[2];
           $record['codigo_postal'] = $data[14];

           /* fazer o que tens a fazer */
       }
   }
} else {
   echo "Erro a abrir o ficheiro\n<br />";
}

$time_end = microtime(true);
echo "elapsed time : ".($time_end - $time_start)." (segs)";
?>

output :

elapsed time : 4.0243990421295 (segs)


IRC : sim, é algo que ainda existe >> #p@p

Share this post


Link to post
Share on other sites
panickz

niceeeee! Brigadao isso ja me resolve tudo.

$data = fgetcsv($handle, 0, ";")
Esta função é a cereja, desconhecia. Fico-te a dever uma ;)

Entretanto também pensei numa solução que pode funcionar embora desse mais voltas. Seria importar tudo em CSV para através do phpmyadmin de seguida fazer select das pretendidas e exportar a query. E depois voltar a importar com os dados já filtrados.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.