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

danielcsgomes

Concelhos, distritos, localidades

Recommended Posts

danielcsgomes

Boa tarde a todos, gostaria saber se alguem conhece algum sitio aonde se possa retirar todos os concelhos, distritos, localidades de portugal de modo a ser introduzido logo na base de dados?


Full Stack Web Developer @ Sedimap PT

Co-founder & Co-organizer @ phplx

Zend Certified Engineer PHP 5.3

Certified Scrum Master

Share this post


Link to post
Share on other sites
marinheiro

http://www.ctt.pt/contents/Downloads/todos_cp.zip

tem um ficheiro com todos os distritos (DD;Nome), um ficheiro com todos os concelhos (DD;CC;Nome) e um ficheiro com todas as freguesias (DD;CC;FF;Nome)...


há 10 tipos de pessoas: as que sabem binário e as que não sabem...[br][br]todas as nossas vidas não passam de release candidates... com o aperfeiçoamento, um dia chegaremos à versão final..

Share this post


Link to post
Share on other sites
danielcsgomes

Era mesmo isso que estava a procura agora so resta colocar na base de dados ;) tks!


Full Stack Web Developer @ Sedimap PT

Co-founder & Co-organizer @ phplx

Zend Certified Engineer PHP 5.3

Certified Scrum Master

Share this post


Link to post
Share on other sites
hardcore

Pessoal, alguém consegue dizer-me como consigo passar os dados desses ficheiros para uma tabela do MySQL?

Se usar a query:

Load Data Infile 'caminho do ficheiro' into table minha_tabela

Ele passa mas só se o ficheiro txt tiver com tabulações em vez de ";".

Tentei passar para o Excel (por vezes o excel não passa todos os dados não sei porquê) e e gravar um txt com tabulações. Quando passo, desta forma, a tabela de do MySQL fica com uma linha a mais no registo, como se tivesse feito um ALT+ENTER no campo.

Alguém sabe dizer-me como se faz para passar tal e qual como está nos ficheiros dos ctt?

O que eu já tinha feito, foi um programa em C# para manipular os dados do ficheiro e passar a informação que me interessa para outro ficheiro mas o que gostava na realidade era saber como é que se faz para passar tal e qual dos ficheiros disponibilizados pelos ctt.

obrigado.

Share this post


Link to post
Share on other sites
Battousai

Acho que só em php. Se for do tipo de ficheiro CSV, fazes do estilo:


$ficheiro = 'csv.csv';
$handle = fopen($ficheiro,'r');

while ( ($dados = fgetcsv( $handle, 2000, ';', '"') ) !== false ){

$dadosParaInserir [] = array( $dados[1], $dados[2], $dados[3]... );

}

....

inserir na bd

...

pesquisa sobre a funcao fgetcsv

Share this post


Link to post
Share on other sites
hardcore

obrigado Battousai

Descobri também esta maneira

LOAD DATA INFILE 'data.txt' INTO TABLE tbl_name

FIELDS TERMINATED BY ','

LINES TERMINATED BY '\n';

Share this post


Link to post
Share on other sites
pedrotuga

obrigado Battousai

Descobri também esta maneira

Coool!

Que motor de base de dados dá para fazer isso? Todos?

Não sabia desse pequeno truque.

Share this post


Link to post
Share on other sites
hardcore

Ya, penso que dão todos... Eu normalmente uso o MS SQL mas desta vez tenho de usar o mysql.

Mas detectei um pequeno problema... o ficheiro todos_cp tem dados repetidos... há alguma forma de dar a volta à situação. Eu tentei acrescentar um campo chave com incrementação automática, mas se quero passar directamente do ficheiro para a tabela os campos têm de bater certos. têm de ser exactamente 16...

alguma ajuda?

Share this post


Link to post
Share on other sites
Battousai

http://dev.mysql.com/doc/refman/5.0/en/load-data.html

Tens aí a sintaxe:

LOAD DATA [LOW_PRIORITY | CONCURRENT] [LOCAL] INFILE 'file_name'
    [REPLACE | IGNORE]
    INTO TABLE tbl_name
    [CHARACTER SET charset_name]
    [FIELDS
        [TERMINATED BY 'string']
        [[OPTIONALLY] ENCLOSED BY 'char']
        [ESCAPED BY 'char']
    ]
    [LINES
        [sTARTING BY 'string']
        [TERMINATED BY 'string']
    ]
    [iGNORE number LINES]
    [(col_name_or_user_var,...)]
    [sET col_name = expr,...]

Tens a opção de adicionar um REPLACE.

Share this post


Link to post
Share on other sites
hardcore

agradecido, funcionou!

foi só simplificar o código

LOAD DATA INFILE 'c:/todos_cp.txt'

replace

INTO TABLE todos

FIELDS TERMINATED BY ';'

Share this post


Link to post
Share on other sites
M6

Cuidado com o ficheiro dos CTT, recentemente sofreu uma alteração e as freguesias deixaram de constar no .zip.

Com "sorte" esta situação será temporária.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
marinheiro

eu tenho o ficheiro completo, separado por distritos, concelhos e freguesias... se alguém necessitar, basta pedir :D


há 10 tipos de pessoas: as que sabem binário e as que não sabem...[br][br]todas as nossas vidas não passam de release candidates... com o aperfeiçoamento, um dia chegaremos à versão final..

Share this post


Link to post
Share on other sites
cavalinho81

eu tenho o ficheiro completo, separado por distritos, concelhos e freguesias... se alguém necessitar, basta pedir :)

Pode enviar-me esse ficheiro.

Share this post


Link to post
Share on other sites
fnds

Neste momento o zip tem:

- todos_cp.txt

- leiame.txt

- freguesias.txt

- distritos.txt

- concelhos.txt

falta alguma coisa?

Share this post


Link to post
Share on other sites
radicalboy

Sei que não é o sitio indicado, mas aproveito já que tem a ver com isto...

Como faço um campo de opções vindas do mysql..

Por exemplo, de inicio tenho os distritos, ao seleccionar um, aparece só os concelhos associados a esse e assim como para as freguesias

Share this post


Link to post
Share on other sites
yoda

Sei que não é o sitio indicado, mas aproveito já que tem a ver com isto...

Como faço um campo de opções vindas do mysql..

Por exemplo, de inicio tenho os distritos, ao seleccionar um, aparece só os concelhos associados a esse e assim como para as freguesias

Que linguagens estás a usar?

Share this post


Link to post
Share on other sites
nruivo

boas a todos,

Para quem usa estes ficheiros oriundos dos ctt, venho fazer só um pequeno alerta.

Os Ctt disponibilizam periodicamente os ficheiros.

De tempos a tempos lançam uma nova versão, o que é optimo, pois permite-nos atraves de carregamentos periodicos ter a nossa BD actualizada.

O problema nisto é que não indicam as alterações que houve entre uma versão e outra.

Não havendo os devidos cuidados, pode-se começar a deixar 'lixo' na nossa BD. registos que os ctt deixam de usar, ou que alteraram e nós não temos possibilidades de saber quais.

Para quem esta a começar a usar estes dados agora, o melhor é começar ja a pensar, em criar rotinas de importação destes dados, fazendo as validações/substituições possiveis quanto aos dados já existentes na vossa BD.

um abraço,

Share this post


Link to post
Share on other sites
JCSL23

Boa noite pessoal. Alguem me pode enviar a lsita com as freguesias? Obrigado. ( desousalopes [at] gmail [dot] com )

Share this post


Link to post
Share on other sites
IceBrain

Não consigo encontrar no site da CTT o ficheiro para fazer download.  :thumbsup:

O link está na primeira página deste tópico.

❝The idea that I can be presented with a problem, set out to logically solve it with the tools at hand, and wind up with a program that could not be legally used because someone else followed the same logical steps some years ago and filed for a patent on it is horrifying.❞- John Carmack on software patents

A list  of command line apps

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.