2011-12-12 75 views

Respuesta

4

Si usted tiene todas las vistas con el prefijo determinado prefijo, puede utilizar este comando:

pg_dump -s -t 'prefix*' dbname > db.dump 

o puede utilizar -t cambiar el mayor número posible de puntos de vista con los nombres ... Ver página del manual de pg_dump, en el extremo son ejemplos ...

+4

Tenga en cuenta que esto exporta las vistas, no los datos que devuelven las vistas. Esto es probablemente obvio para la mayoría, pero no fue para mí al principio. Para exportar los datos devueltos por una vista, consulte http://stackoverflow.com/questions/1745105/postgres-dump-of-only-parts-of-tables-for-a-dev-snapshot –

+0

Probablemente preferiría dejar caer the '-s' y sigue usando' pg_dump', en lugar de ir por la ruta 'COPY' discutida en esa pregunta – kez

15

No hay marca de dirección para hacer esto, pero utilizando nuestro favorito consulta de la-esquema-a-generate-a-comando técnica:

select string_agg('-t ' || quote_ident(nspname) || '.' || quote_ident(relname), ' ') 
    from pg_class join pg_namespace on pg_namespace.oid = pg_class.relnamespace 
    where relkind = 'v' and not (nspname ~ '^pg_' or nspname = 'information_schema'); 

Esto generará una cadena que se puede utilizar con un pg_dump de comandos, por ejemplo:

-t media.duplicated_component -t adv.advert_view_distribution 

que luego podría empalmar en una línea de comando directamente:

pg_dump $(psql -c "select string_agg(...etc...)" db) db 
+0

Si desea agregar vista materializada, use 'relkind in ('v', 'm')'. – Nobu

+0

Stil funciona bien con PostgreSQL versión 9.4. – mivk

Cuestiones relacionadas