Add new comment

29
May

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!