仅导出Postgres中的视图

时间:2011-12-12 11:58:34

标签: postgresql

有没有办法只从Postgres架构中导出视图?

我正在使用Postgres 8.4。

谢谢。

2 个答案:

答案 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的联机帮助页,最后是示例......