web-dev-qa-db-ja.com

pg_dumpで特定のシーケンスを除外する方法はありますか?

出力をプレーンファイルに入れるpg_dumpコマンドからシーケンスを除外したいのですが。

Command: /Library/PostgreSQL/8.4/bin/pg_dump --Host localhost --port 5433 --username xxx --format plain --clean --inserts --verbose --file /Users/xxx/documents/output/SYSTEM_admin_20131126015325.sql --exclude-table public.table1 --exclude-table public.table2 mydatabase

上記で使用しているテーブルのスイッチがあること、そして pg_dumpのドキュメント に記載されているように、pg_restoreと組み合わせてtar形式でデータベースオブジェクトを有効/無効にできることを知っていますが、pg_restoreは使用しません。

どうもありがとう

グラハム

17
Graham

2つのケースがあります。

  1. 除外するシーケンスは、あなたがダンプしているテーブルが所有しています(通常はSERIAL列)。
    参照: postgresにシーケンステーブルのないテーブルをダンプ
    短い答え:いいえ、シーケンスを残しておくことはできません。

  2. シーケンスは、ダンプされたテーブルによって所有されていません。次に、--exclude-tableスイッチを使用して、テーブルのように除外できます。

Pg_dumpのドキュメントから:

-Tテーブル--exclude-table = table

Do not dump any tables matching the table pattern.

パターンは-tと同じルールに従って解釈されます

そして-tについて:

-tテーブル
-table = table

Dump only tables (or views or sequences or foreign tables) matching table
27
Daniel Vérité

シーケンスがテーブルによって所有されている場合、次のように-Tを使用してシーケンスとテーブルの両方を除外できます。

pg_dump -T table -T table_id_seq
0
AlexDev