web-dev-qa-db-fra.com

Création d'un cliché de base de données pour des tables et des entrées spécifiques Postgres

J'ai une base de données avec des centaines de tables, ce que je dois faire, c'est exporter des tables spécifiées et insérer des instructions pour les données dans un fichier SQL.

La seule déclaration que je sache pouvoir y parvenir est

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

Devrais-je exécuter cette instruction pour chaque table ou existe-t-il un moyen d'exécuter une instruction similaire pour exporter toutes les tables sélectionnées dans un seul grand carré? Le pg_dump ci-dessus n'exporte pas le schéma de la table mais insère, j'ai besoin des deux

Toute aide serait appréciée.

69
Roland

À partir du manuel : "(, vous pouvez sélectionner plusieurs tables en écrivant plusieurs commutateurs -t "

Vous devez donc lister toutes vos tables

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

Notez que si vous avez plusieurs tables avec le même préfixe (ou suffixe), vous pouvez également utiliser des caractères génériques pour les sélectionner avec le paramètre -t:

" De plus, le paramètre table est interprété comme un motif selon les mêmes règles que celles utilisées par les commandes\d de psql "

127

Si ces tables spécifiques correspondent à une expression rationnelle particulière, vous pouvez utiliser l'option regex in -t dans pg_dump.

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

Par exemple, pour vider les tables qui ont commencé avec "test", vous pouvez utiliser

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