UXDM (Universal Extensible Data Migrator) è una libreria PHP che permette di migrare dati da un sistema o formato ad un altro. Può essere installato facilmente utilizzando Composer, lanciando il seguente comando dalla root del progetto corrente:
composer require divineomega/uxdm
Per raggiungere l'obiettivo occorre creare un file PHP che contiene il codice UXDM necessario alla migrazione, produrre gli oggetti sorgente e di destinazione. Ad esempio, nel seguente codice viene utilizzato un CSV come "sorgente" ed un PDO (database) come "destinazione":
$csvSource = new CSVSource('users.csv');
$pdoDestination = new PDODestination(new PDO('mysql:dbname=test-database;host=127.0.0.1', 'root', 'password'), 'users');
A questo punto, si crea un nuovo oggetto UXDM necessario alla migrazione, e lo si configura appositamente, grazie ai metodi specifici della classe Migrator
:
$migrator = new Migrator;
$migrator->setSource($csvSource)
->setDestination($pdoDestination)
->setFieldsToMigrate(['id', 'email', 'name'])
->setKeyFields(['id'])
->withProgressBar()
->migrate();
Come ultimo step, lanciamo lo script per effettuare e completare la procedura di migrazione.
Come anticipato, ogni procedura di migrazione tramite UXDM richiede un oggetto sorgente ed almeno un oggetto di destinazione, che determinano dove e come i dati vengono letti e scritti. Il pacchetto UXDM dispone di un'ampia varietà di oggetti sorgente e destinazione, come ad esempio:
- PDO (PHP Database Object) Sorgente -> destinazione.
- Eloquent (come utilizzato in Laravel) Sorgente -> destinazione.
- Doctrine (come utilizzato in Symfony) destinazione.
- CSV (valori separati da virgole) Sorgente -> destinazione.
- Array associativi Sorgente -> destinazione.
- File JSON Sorgente -> destinazione.
- XML Sorgente -> destinazione.
- WordPress Post Sorgente.
- WordPress User Sorgente.
- Debug Output destinazione.
Gli oggetti sorgente e destinazione possono essere utilizzati in tutte le combinazioni possibili: i dati possono essere migrati da un CSV e inseriti in un database, cosi come i dati di un database possono essere migrati in un file CSV. E' inoltre possibile utilizzare oggetti sorgente e di destinazioni simili nella stessa migrazione, ad esempio tramite due oggetti PDO (sorgente e destinazione) per trasferire i dati da un database all'altro.
Nella documentazione Sources & Destinations è possibile reperire tutte le informazioni necessarie per effettuare ogni singola procedura.
Via UXDM