it-swarm.it

Creazione di un dump del database per tabelle e voci specifiche Postgres

Ho un database con centinaia di tabelle, quello che devo fare è esportare le tabelle specificate e inserire le istruzioni per i dati in un file sql.

L'unica affermazione che conosco può raggiungere questo obiettivo

pg_dump -D -a -t zones_seq interway > /tmp/zones_seq.sql

Devo eseguire questa istruzione per ogni singola tabella o esiste un modo per eseguire un'istruzione simile per esportare tutte le tabelle selezionate in un grande sql grande. Il pg_dump sopra non esporta solo lo schema della tabella inserisce, ho bisogno di entrambi

Qualsiasi aiuto sarà apprezzato.

69
Roland

Direttamente da manuale : " È possibile selezionare più tabelle scrivendo più interruttori -t "

Quindi devi elencare tutti i tuoi tavoli

pg_dump --column-inserts -a -t zones_seq -t interway -t table_3 ... > /tmp/zones_seq.sql  

Nota che se hai più tabelle con lo stesso prefisso (o suffisso) puoi anche usare i caratteri jolly per selezionarle con il -t parametro:

" Inoltre, il parametro table è interpretato come un pattern secondo le stesse regole usate dai comandi\d di psql "

127

Se quelle tabelle specifiche corrispondono a una particolare regex, puoi usare l'opzione regex in -t in pg_dump.

pg_dump -D -a -t zones_seq -t interway -t "<regex>" -f /tmp/zones_seq.sql <DBNAME>

Ad esempio, per scaricare le tabelle che sono iniziate con "test", è possibile utilizzare

pg_dump -D -a -t zones_seq -t interway -t "^test*" -f /tmp/zones_seq.sql <DBNAME>
17
Jothikanth