2011-12-12 6 views

答えて

4

あなたが特定の接頭辞で始まるすべてのビューを持っている場合は、このコマンドを使用することができます。

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

またはあなたが使用することができますが、最後に、pg_dumpのためのマニュアルページを参照してください...ビューの名前で、できるだけ多くの切り替え-t例です...

+4

ビューがエクスポートするデータではなく、ビューがエクスポートされることに注意してください。これはおそらくほとんどの人には明らかですが、最初は私にとってはそうではありませんでした。ビューから返されたデータをエクスポートするには、http://stackoverflow.com/questions/1745105/postgres-dump-of-only-parts-of-tables-for-a-dev-snapshot –

+0

を参照してください。 '-s'を実行しても、その問題について議論された' COPY'ルートを下回る代わりに 'pg_dump'を使っています – kez

15

あり、これを行うには直接のフラグはませんが、技術私たちのお気に入りのスキーマ・ツー・生成・コマンドのクエリを、使用して:

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 
+0

マテリアライズドビューを追加する場合は、 'relkind in( 'v'、 'm')'を使用します。 – Nobu

+0

StilはPostgreSQLバージョン9.4で正常に動作します。 – mivk

関連する問題