Data ingestion pipeline from the web to PostgreSQL, developed during the Data Engineering Zoomcamp.
|-- .devcontainer/
|-- .gitignore
|-- README.md
`-- pipeline
|-- .python-version
|-- Dockerfile # Image for data ingestion
|-- docker-compose.yaml # Persistent services (PostgreSQL + pgAdmin)
|-- ingest_data.py # Ingestion script
|-- pyproject.toml # Dependencies and project configuration
`-- uv.lock
- Docker & Docker Compose installed
- Git to clone this repository
In PowerShell (for Windows), navigate to the repository directory and execute:
docker-compose upVerify that services are online:
docker-compose psExpected output:
NAME IMAGE STATUS
pgdatabase postgres:16 Up
pgadmin dpage/pgadmin4 Up
docker build -t amazon_ingest:v001 ./docker run -it --rm --network=pipeline_default amazon_ingest:v001 --pg-host pgdatabaseThe script will:
- Connect to PostgreSQL via
pgdatabase(Docker network hostname) - Download the raw data from this repository
- Elaborate the data
- Populate tables in
amazon_purchases - Terminate automatically (
--rm)
Expected output:
Transactions ingested successfully
Demographics ingested successfully
- Open http://localhost:8085
- Login (admin@admin.com:pass)
- Right click on Servers → Register → Server
- Fill in the fields:
- Name:
pg - Hostname:
pgdatabase - Port:
5432 - Username:
root - Password:
root
- Name:
- Navigate: Servers → pg → Databases → amazon_purchases → Schemas → public → Tables
- Language: Python 3.13
- Package Manager:
uv - Database: PostgreSQL 18
- Database UI: pgAdmin 4
- Containerization: Docker & Docker Compose
- Main Dependencies: (see
pyproject.toml)