Migration Scripts
Utility scripts per la gestione della migrazione.
sync_migration_state.py
Sincronizza la tabella migration_state con i dati effettivamente presenti in PostgreSQL.
Quando usare
Usa questo script quando migration_state non è sincronizzato con i dati reali, ad esempio:
- Dopo inserimenti manuali in PostgreSQL
- Dopo corruzione dello stato
- Prima di eseguire migrazione incrementale su dati già esistenti
Come funziona
Per ogni tabella (rawdatacor, elabdatadisp):
- Trova la riga con MAX(created_at) - l'ultima riga inserita
- Estrae la consolidation key da quella riga
- Aggiorna
migration_state._globalcon quella chiave
Utilizzo
# Eseguire dalla root del progetto
python scripts/sync_migration_state.py
Output
Syncing migration_state with actual PostgreSQL data...
================================================================================
ELABDATADISP:
Most recently inserted row (by created_at):
created_at: 2025-12-30 11:58:24
event_timestamp: 2025-12-30 14:58:24
Consolidation key: (ID0290, DT0007, 2025-12-30, 14:58:24)
✓ Updated migration_state with this key
RAWDATACOR:
Most recently inserted row (by created_at):
created_at: 2025-12-30 11:13:29
event_timestamp: 2025-12-30 11:11:39
Consolidation key: (ID0304, DT0024, 2025-12-30, 11:11:39)
✓ Updated migration_state with this key
================================================================================
✓ Done! Incremental migration will now start from the correct position.
Effetti
Dopo aver eseguito questo script:
migration_state._globalsarà aggiornato con l'ultima chiave migratapython main.py migrate incrementalpartirà dalla posizione corretta- Non verranno create duplicazioni (usa ON CONFLICT DO NOTHING)
Avvertenze
- Esclude automaticamente dati corrotti (unit_name come
[Ljava.lang.String;@...) - Usa
created_atper trovare l'ultima riga inserita (nonevent_timestamp) - Sovrascrive lo stato globale esistente
Verifica
Dopo aver eseguito lo script, verifica lo stato:
SELECT table_name, partition_name, last_key
FROM migration_state
WHERE partition_name = '_global'
ORDER BY table_name;
Dovrebbe mostrare le chiavi più recenti per entrambe le tabelle.