pg_dump mette a disposizione diverse opzioni che consentono di salvare solamente la struttura della tabella, solamente i dati oppure entrambe.
Di seguito vediamo i tre casi più comuni. Riepilogo dei comandi
| Operazione | Comando |
|---|---|
| Solo struttura | pg_dump --schema-only |
| Struttura + dati | pg_dump |
| Solo dati | pg_dump --data-only |
Esportare solamente la struttura di una tabella
Se desideri esportare esclusivamente lo schema della tabella (CREATE TABLE, indici, vincoli, ecc.) senza includere i dati, utilizza l’opzione --schema-only.
pg_dump -U username -d database -t nome_tabella --schema-only > struttura.sql
struttura.sql conterrà solamente le istruzioni SQL necessarie per ricreare la tabella. Esportare struttura e dati
Per esportare sia la definizione della tabella che il suo contenuto è sufficiente utilizzare pg_dump senza opzioni aggiuntive.
pg_dump -U username -d database -t nome_tabella > completo.sql
Il file generato potrà essere utilizzato per ricreare completamente la tabella, compresi tutti i record presenti al momento dell’esportazione.
Esportare solamente i dati
Nel caso in cui la struttura della tabella esista già e sia necessario esportare esclusivamente i record, è possibile utilizzare l’opzione --data-only.
pg_dump -U username -d database -t nome_tabella --data-only > dati.sql
Il file risultante conterrà solamente le istruzioni INSERT, senza alcun comando relativo alla creazione della tabella.
Esportare una tabella appartenente a uno schema
Se la tabella da esportare appartiene a uno schema diverso da quello predefinito, è possibile specificare il nome dello schema direttamente tramite l’opzione -t.
pg_dump -U username -d database -t schema.nome_tabella > completo.sql
Ad esempio, per esportare la tabella ordini appartenente allo schema vendite:
pg_dump -U username -d database -t vendite.ordini > completo.sql
In questo modo pg_dump esporterà esclusivamente la tabella indicata all’interno dello schema specificato.
Importare il dump
Per ripristinare uno dei file generati è sufficiente utilizzare psql.
psql -U username -d database < struttura.sql
psql -U username -d database < completo.sql
psql -U username -d database < dati.sql
Conclusione
pg_dump è possibile esportare rapidamente una singola tabella PostgreSQL scegliendo se includere solamente la struttura, solamente i dati oppure entrambe. È una funzionalità particolarmente utile per migrare tabelle tra database, creare backup mirati o condividere dati senza esportare l’intero database.