Importando a base de dados do Mapa das Organizações da Sociedade Civil

O Mapa das Organizações da Sociedade Civil é uma das mais novas bases de dados do Portal Brasileiro de Dados Abertos. Fui tentar extrair algumas informações dessa base e tive um pouco de dificuldade para importá-la. Então, vou descrever aqui o processo que segui para tanto.

Antes de começar o "passo a passo", vale destacar que:

  1. Essa base de dados vem de um dump de um SGBD PostgreSQL, um projeto de software livre;
  2. O PostgreSQL, por padrão, exporta e importa os dados num formato próprio binário, e num num formato de texto plano (como são os arquivos do tipo *.sql);
  3. O dump disponibilizado no DadosGovBr está no formato texto plano;
  4. A base é georreferenciada e, dessa forma, é necessário instalar, além do PostgreSQL, também a extensão para georreferenciamento PostGis;
  5. O dump foi salvo num arquivo sem extensão nenhuma (o que não faz muita diferença), mas sua extensão "natural" seria ".sql";
  6. Existem 3 recursos disponíveis lá no DadosGovBr:
    1. a base de dados em si ("Base de dados do Mapa das Organizações da Sociedade Civil"), que é um arquivo de 259MB compactado no formato 7z, e que fica com 1.2GB após ser descompactado;
    2. o Diagrama Entidade Relacionamento do Mapa das OSCs, que é uma imagem no formato png com o desenho esquemático do banco de dados;
    3. Dicionário de dados da base do Mapa, que é um arquivo html simples com o descritivo das tabelas da base de dados.

Mas vamos ao que interessa, o processo de "setup" e importação da base.

Estou descrevendo a minha experiência, que foi com um sistema debian-like (pode ser Debian, Ubuntu, Mint, Kubuntu, etc etc etc).

O primeiro passo foi instalar o PostgreSQL e o PostGis. Como nos repositórios do meu sistema operacional a versão mais nova de ambos os softwares eram 9.1 e 1.5, respectivamente, que são bem antigas, optei por adicionar um repositório com versões mais recentes, primeiro vamos abrir o arquivo abaixo:

sudo gedit /etc/apt/sources.list.d/postgresql.list

Em seguida adicionamos o seguinte conteúdo nele e salvamos:

deb http://apt.postgresql.org/pub/repos/apt/ precise-pgdg main

Agora precisamos adicionar  a "chave de autenticação" do repositório:

wget --quiet -O - https://www.postgresql.org/media/keys/ACCC4CF8.asc |   sudo apt-key add

Agora atualizamos os pacotes dos repositórios:

sudo aptitude update

sudo aptitude safe-upgrade

E agora vamos, de fato, à instalação do PostgreSQL:

sudo aptitude install postgresql-9.3 postgresql-9.3-postgis-2.1 postgresql-9.3-postgis-scripts postgresql-common postgresql-contrib-9.3 postgis

Após finalizar a instalação, o primeiro passo é configurar o PostGis, então vamos logar com o usuário  recém criado postgres:

sudo su - postgres

Agora entramos na linha de comando do postgres:

psql

Agora executamos os comandos SQL para instalar o PostGis:

CREATE EXTENSION postgis;

CREATE EXTENSION postgis_topology;

CREATE EXTENSION fuzzystrmatch;

CREATE EXTENSION postgis_tiger_geocoder;

Agora vamos criar um usuário para você no SGBD (aqui você deve usar o mesmo nome de usuário que você usa no seu sistema operacional):

CREATE USER <seu_nome_de_usuario> WITH PASSWORD 'oscs_password';

Agora criamos a base de dados que vai receber os dados:

CREATE DATABASE oscs WITH OWNER=<seu_nome_de_usuario>;

Por fim, devemos prosseguir à importação, mas antes temos que voltar ao nosso usuário padrão do sistema operacional. Então saímos do shell do PostgreSQL com o comando:

\q

O próximo passo é sair do usuário postgres, com o comando:

exit

Agora, já de volta ao nosso usuário padrão, baixamos a base de dados e a descompactamos na pasta de nossa preferência (vou usar a home do usuário).

O passo seguinte é fazer a importação. Lembrando que o arquivo descompactado não possui extensão ("mapa-oscs"), mas isso não muda nada.

Então o comando para realizar a importação é:

psql -f mapa-oscs oscs

Neste caso, psql é o programa do postgres em si, mapa-oscs é o arquivo de dump em texto plano e oscs é o nome da base de dados para onde serão importados os dados.

Pronto, agora a base já deve ter sido importada, talvez com alguns errinhos, mas já deve estar funcional. =)

Espero ter ajudado!

Abraços e até a próxima!

8 comments

5
jun

Parabens !
Excelente artigo, voce pensou em todos os niveis de usuarios.
Continue assim.

18
out

Primeiramente muito grato pelo suporte prestado com a leitura desta base!!! Decorrente disso passei a conhecer um pouco mais sobre BD e postgresql!!

Segui os procedimentos de instalação e importação da base, durante o processo as linhas que seguem ficaram aparecendo em sequência por pouco mais de um minuto:

psql:mapa-oscs:1687761: invalid command \N
psql:mapa-oscs:4077461: invalid command \.

ao que essa mensagem de erro foi devolvida:

psql:mapa-oscs:5665445: ERROR: out of memory
DETAIL: Cannot enlarge string buffer containing 0 bytes by 1113468081 more bytes.

Sabem me orientar em como solucionar este caso?

Já agradeço antecipadamente pelo espaço!!

:)

22
out

Sobre o primeiro erro, recomendo a leitura desta pergunta no stackoverflow:
http://stackoverflow.com/questions/20427689/psql-invalid-command-n-while...

Sobre o segundo problema, pode ser uma consequência dos erros anteriores. Ou pode ser que faltou espaço para sua instalação do postgresql importar toda a base de dados (que é grande).

Isso é o que eu consigo pensar assim, de bate-pronto.

Espero que ajude!

Abraços

12
jan

Olá, parabéns pela perfeita explanação!

Tenho uma dúvida apenas. No mapa disponível online, são exibidas aproximadamente 11.000 organizações. Minha dúvida: Alguém poderia me informar o total de organizações (ONGs) contidas neste DB? São as 303.000 OSCs ou somente 11.000 (aproximadamente).

Agradeço muito a atenção que possa merecer!

Att.,
Bruno Rabelo

21
mar

Tenho poucos conhecimentos em PostgreSQL. Meu interesse é explorar a base.

Como faço para importar a base usando PostgreSQL no Windows 7? Como importar base usando o PgAdmin III?

25
mar

Olá, infelizmente não tenho conhecimento sobre como realizar este processo no Windows, por isso não terei como oferecer ajuda neste caso.

23
mai

Prezados,
Não entendo nada disso que está descrito acima... Gostaria somente de ter acesso aos dados em um formato de .xls para que possa importá-los para um CRM. Existe uma outra explicação para uma pessoa como nenhuma experiência no PostgreSQL? Estou trabalhando como um Mac 10.11.5
Muito obrigado

23
mai

Olá Michel, a base foi disponibilizada apenas no formato SQL (no portal de dados abertos).

Uma possibilidade seria alguém carregar a base no postgresql e depois exportá-la num formato de planilha eletrônica. Mas já adianto que dada a quantidade de dados e a complexidade dos mesmos, isso ficaria bem ruim de se trabalhar num software de planilhas eletrônicas.

De qualquer forma, caso não tenha acesso a alguém que possa te ajudar nessa exportação, você pode tentar requerer esse dado em formato de planilha. O ideal é requerer a quem é responsável pela publicação do dado. No próprio portal de dados abertos há esta informação:

http://dados.gov.br/dataset/mapa-das-oscs

"Secretaria Nacional de Articulação Social" -> Se é que ela ainda existe, arrisco-me a dizer que não existe mais, infelizmente.

Att, Diego

Comentar