有没有办法只从Postgres架构中导出视图?
我正在使用Postgres 8.4。
谢谢。
答案 0 :(得分:19)
没有直接的标志可以做到这一点,但使用我们最喜欢的查询 - 模式生成命令技术:
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');
这将生成一个可与pg_dump命令一起使用的字符串,例如:
-t media.duplicated_component -t adv.advert_view_distribution
然后您可以直接将其拼接到命令行中:
pg_dump $(psql -c "select string_agg(...etc...)" db) db
答案 1 :(得分:6)
如果您的每个视图都以某个前缀为前缀,则可以使用以下命令:
pg_dump -s -t 'prefix*' dbname > db.dump
或者你可以使用-t开关尽可能多地使用视图名称...请参阅pg_dump的联机帮助页,最后是示例......