Post Image

Guida Completa per Importare i Calciatori di Serie A in un Database PostgreSQL con Docker per il Fantacalcio

Se sei un appassionato di fantacalcio e desideri un metodo efficace per monitorare i calciatori disponibili durante l'asta, sei nel posto giusto! In questo articolo, ti guiderò passo dopo passo su come caricare i dati dei calciatori di Serie A, in un database PostgreSQL utilizzando Docker. Questa guida è compatibile con tutte le principali piattaforme: Linux, Windows e macOS. Utilizzeremo un file CSV, scaricabile dal nostro sito, per alimentare il tuo database e mantenere sempre aggiornato l'elenco dei giocatori disponibili.

Download del file csv dei calciatori

Per prima cosa, visita la pagina del nostro sito elenco calciatori serie A/ e clicca su Scarica CSV per ottenere sul tuo PC la lista dei calciatori di Serie A.

Una volta scaricato il file, aprilo con un editor di testo o un programma come OpenOffice per verificare il suo contenuto. Troverai l'elenco dei calciatori aggiornato.

Creazione database su Docker

Docker è uno strumento che permette di creare e gestire ambienti di sviluppo isolati. Per preparare l'ambiente Docker, crea una cartella per il progetto sul tuo PC, ad esempio denominata fantacalcio. All'interno di questa cartella, crea un file docker-compose.yml con il seguente contenuto:

services:
  db:
    image: postgres:15
    container_name: postgres-db
    environment:
      POSTGRES_USER: myuser
      POSTGRES_PASSWORD: mypassword
      POSTGRES_DB: calciatori_db
    volumes:
      - ./data:/var/lib/postgresql/data
      - ./init:/docker-entrypoint-initdb.d
    ports:
      - "5432:5432"

Nel file sono specificate le seguenti proprietà:

  • POSTGRES_USER: il nome utente per PostgreSQL.
  • POSTGRES_PASSWORD: la password per PostgreSQL.
  • POSTGRES_DB: il nome del database che vuoi creare.
  • ./data: una directory locale dove saranno salvati i dati del database.
  • ./init: una directory locale dove puoi mettere script SQL o CSV che verranno eseguiti/caricati automaticamente all'avvio del container.

Come indicato, dovrai creare una cartella data, che conterrà i dati di PostgreSQL, e una cartella init, dove metterai i file per l'inizializzazione del database.

Inizializzazione database

All'interno della cartella init, crea il file init.sql contenente le istruzioni per inizializzare il database e sposta il file calciatori.csv, precedentemente scaricato. Questo script verrà eseguito durante la creazione del database e non sarà più eseguito se il database è già esistente.

Il file init.sql deve contenere:

CREATE TABLE IF NOT EXISTS calciatori (
    id INT PRIMARY KEY,
    nome VARCHAR(50),
    squadra VARCHAR(50),
    ruolo VARCHAR(50),
    quotazione INT,
    acquistabile BOOLEAN DEFAULT true
);

COPY calciatori(id,nome,squadra,ruolo,quotazione) 
FROM '/docker-entrypoint-initdb.d/calciatori.csv' 
DELIMITER ',' 
CSV HEADER;

Assicurati che il file calciatori.csv sia formattato correttamente con le intestazioni id, nome, squadra, ruolo e quotazione.

Avvio del container

Una volta creato il file, la struttura della tua cartella sarà:

.
├── data
├── docker-compose.yml
└── init
    ├── calciatori.csv
    └── init.sql

Naviga alla root del progetto e avvia il container con:

docker-compose up -d

Questo comando scaricherà l'immagine di PostgreSQL, creerà il container e avvierà il database. I dati saranno persistiti nella cartella data.

Connessione al database

Una volta avviato il container, potrai connetterti al database utilizzando un client di tua scelta, come psql dalla riga di comando, PGAdmin o DBeaver.

Ad esempio, per connetterti tramite psql, utilizza:

psql -h localhost -U myuser -d calciatori_db

Verifica del caricamento del file CSV

Per verificare che i calciatori siano stati caricati correttamente, esegui la seguente query:

SELECT * FROM calciatori;

Questa query restituirà l'elenco dei calciatori caricati nella tabella.

Query utili durante l'asta

Durante l'asta, potresti aver bisogno di filtrare i calciatori disponibili. Ecco alcune query che potrebbero esserti utili:

Per filtrare i calciatori per ruolo:

SELECT * FROM calciatori WHERE ruolo = 'portiere';

Il ruolo può essere: portiere, difensore, centrocampista, attaccante.

Per trovare calciatori acquistabili (indicati con 't' per true) per un determinato ruolo:

SELECT * FROM calciatori WHERE ruolo = 'portiere' AND acquistabile = 't';

Per gestire i calciatori acquistabili, puoi:

  1. Cercare l'id del calciatore con:
SELECT * FROM calciatori WHERE nome like '%audero%';
  1. Aggiornare il flag per segnare il calciatore come non acquistabile:
update calciatori set acquistabile = 'f' where id = 7228;

Assicurati di aggiornare l'id e il nome del calciatore con i valori appropriati.

Conclusione

Hai ora un container PostgreSQL in esecuzione, accessibile tramite il client di tua scelta. Il file CSV è stato caricato automaticamente nel database grazie allo script SQL configurato. Se hai domande o riscontri problemi, non esitare a contattarci per assistenza.