Esiste un modo per esportare solo le viste da uno schema Postgres?Esporta solo visualizzazioni in Postgres
Sto utilizzando Postgres 8.4.
Grazie.
Esiste un modo per esportare solo le viste da uno schema Postgres?Esporta solo visualizzazioni in Postgres
Sto utilizzando Postgres 8.4.
Grazie.
Se si dispone di ogni vista prefisso certo prefisso, è possibile utilizzare questo comando:
pg_dump -s -t 'prefix*' dbname > db.dump
oppure è possibile utilizzare -t passare il maggior numero possibile di punti di vista con i nomi ... Vedere pagina di manuale di pg_dump, alla fine sono esempi ...
Non c'è nessuna bandiera diretta per fare questo, ma utilizzando il nostro preferito di query-the-schema-to-generate-a-comando di tecnica:
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');
Questo genererà una stringa che può essere utilizzato con un pg_dump comando, per esempio:
-t media.duplicated_component -t adv.advert_view_distribution
che si poteva poi unire in una linea di comando direttamente:
pg_dump $(psql -c "select string_agg(...etc...)" db) db
Si noti che questo esporta le viste, non i dati restituiti dalle viste. Questo è probabilmente ovvio per la maggior parte, ma non era per me all'inizio. Per esportare i dati restituiti da una vista, consulta http://stackoverflow.com/questions/1745105/postgres-dump-of-only-parts-of-tables-for-a-dev-snapshot –
Probabilmente preferisci lasciar cadere il '-s' e ancora usando' pg_dump', invece di scendere la rotta 'COPY' discussa su quella domanda – kez