Ingestr è una piattaforma Open Source che permette di copiare dati da qualsiasi sorgente e di spostarli verso qualunque destinazione senza dover scrivere una sola linea di codice. Si tratta nello specifico di una libreria utilizzabile da linea di comando per il trasferimento di dati tra database differenti. Dal punto di vista dell'utilizzatore, tipicamente uno sviluppatore, un analista o un sysadmin, Ingestr consente un notevole risparmio di tempo, tutto quello che si deve fare è lanciare un comando e assistere alla migrazione delle informazioni coinvolte.
Installazione di Ingestr
Il codice sorgente di Ingestr è disponibile in un repository dedicato su GitHub. Parliamo di un progetto basato su Python e per la sua installazione è sufficiente inviare la seguente istruzione al package manager pip:
pip install ingestr
Fatto questo non rimane altro che specificare l'URI del database sorgente, la tabella che si intende copiare, l'URI del database di destinazione e la tabella in cui migrare i dati. Come nell'esempio seguente dove la sorgente è Postgres, mentre la destinazione è in BigQuery:
ingestr ingest \
--source-uri 'postgresql://admin:admin@localhost:8837/web?sslmode=disable' \
--source-table 'public.some_data' \
--dest-uri 'bigquery://<your-project-name>?credentials_path=/path/to/service/account.json' \
--dest-table 'ingestr.some_data'
Caricamento incrementale dei dati
La libreria supporta anche il caricamento incrementale dei dati, questo significa che si ha la possibilità di effettuare operazioni di append
, merge
o delete+insert
sulla tabella di destinazione. Se una tabella è stata già migrata in precedenza la si potrà aggiornare dalla sorgente coinvolgendo unicamente i nuovi record. Si ha quindi il vantaggio di non dover spostare più volte l'intero contenuto di una tabella, con un vantaggio notevole dal punto di vista dei tempi di esecuzione.
Se si decide di non utilizzare il caricamento incrementale, ed effettuare un semplice replace che è la modalità predefinita, la tabella di destinazione verrà rimossa e sostituita con una popolata da zero.
Per quanto riguarda la compatibilità, sono supportati numerosi database manager tra cui anche Microsoft SQL Server. Per quanto riguarda MongoDB, Oracle, SQLite e MySQL essi possono essere impiegati unicamente come sorgente, non come destinazione dei dati.