Czy istnieje sposób na eksportowanie tylko widoków ze schematu PostgreS?Eksportuj tylko widoki w Postgresie
Używam Postgres 8.4.
Dziękuję.
Czy istnieje sposób na eksportowanie tylko widoków ze schematu PostgreS?Eksportuj tylko widoki w Postgresie
Używam Postgres 8.4.
Dziękuję.
Jeśli masz każdy widok poprzedzony prefiksem pewnego, można użyć polecenia:
pg_dump -s -t 'prefix*' dbname > db.dump
lub użyć -t włączyć jak najwięcej z nazwami widoków ... Zobacz stronę podręcznika dla pg_dump, na koniec są przykładami ...
Nie ma bezpośredni flag, aby to zrobić, ale przy naszym ulubionym zapytań-the-schemat-to-generate-a-polecenia technika:
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');
To będzie generować ciąg znaków, który może być używany z pg_dump poleceń, np:
-t media.duplicated_component -t adv.advert_view_distribution
które można następnie splatać w wierszu poleceń bezpośrednio:
pg_dump $(psql -c "select string_agg(...etc...)" db) db
Należy zauważyć, że eksportuje widoki, a nie dane zwracane przez widoki. Jest to prawdopodobnie oczywiste dla większości, ale nie było to dla mnie na początku. Aby wyeksportować dane zwrócone przez widok, zobacz http://stackoverflow.com/questions/1745105/postgres-dump-of-only-parts-of-tables-for-a-dev-snapshot –
Prawdopodobnie preferowałbyś upuszczenie '-s' i nadal używa' pg_dump', zamiast iść w dół trasy 'COPY' omawianej w tym pytaniu – kez