Skip to main content

Importação dos Dados

Instalação e Importação

Instalação local (Ubuntu/Debian):

sudo apt install -y postgresql postgresql-contrib
sudo systemctl start postgresql
sudo systemctl enable postgresql

# Criar utilizador e base de dados
sudo -u postgres psql <<EOF
CREATE USER oil_user WITH PASSWORD 'oil2024';
CREATE DATABASE oil_trafaria OWNER oil_user;
GRANT ALL PRIVILEGES ON DATABASE oil_trafaria TO oil_user;
EOF

Instalação via Docker:

docker run -d \
--name postgres-oil \
-e POSTGRES_USER=oil_user \
-e POSTGRES_PASSWORD=oil2024 \
-e POSTGRES_DB=oil_trafaria \
-p 5432:5432 \
-v pg_oil_data:/var/lib/postgresql/data \
postgres:15

Importar CSV com psql:

# Copiar CSV para dentro do container (se Docker)
docker cp dados_trafaria.csv postgres-oil:/tmp/dados_trafaria.csv

# Conectar e importar
psql -h localhost -U oil_user -d oil_trafaria

-- Dentro do psql:
\copy participantes(genero, faixa_etaria, habilitacoes, sit_profissional, bairro)
FROM '/tmp/dados_trafaria.csv'
DELIMITER ',' CSV HEADER;

Importar com Python / pandas:

import pandas as pd
from sqlalchemy import create_engine

df = pd.read_csv('dados_trafaria.csv', encoding='utf-8')

# Limpar nomes de colunas
df.columns = (df.columns
.str.strip()
.str.lower()
.str.replace(' ', '_')
.str.replace('ã', 'a')
.str.replace('ç', 'c'))

engine = create_engine('postgresql://oil_user:oil2024@localhost:5432/oil_trafaria')
df.to_sql('participantes_raw', engine, if_exists='replace', index=False)
print("Importação concluída:", len(df), "registos")

Conectar a Base de Dados ao Metabase

  1. Aceder a Admin → Databases → Add a database
  2. Selecionar PostgreSQL ou MySQL
  3. Preencher: Host (localhost ou nome do container), Port, Database name, Username, Password
  4. Clicar em Save e aguardar sincronização