PDATE: pg_dumpコマンドを実行しているテーブルのデータを除外できました。データがダンプされるのを待つ必要がないため、データを読み込まないよりも速くなります。
--exclude-table-data=event_logs
(PostgreSQL) 9.4.4
誰かがpg_restore
を実行するときにテーブルを除外する方法を知っていますか? pg_dump
を行うときに、その方法を見つけることができます。しかし、私はダンプをしているのではなく、それらを除外することはできません。
ダンプには2つのテーブルがあり、それらは非常に大きく、リストアを実行すると永久に時間がかかるため、スキップしたいと思います。
pg_restore には除外テーブルパラメータがありません。これには、包含テーブルパラメータがあります。
-tテーブル
--table = table
名前付きテーブルの定義またはデータ、あるいはその両方を復元します。複数の-tスイッチで複数のテーブルを指定できます。これを-nオプションと組み合わせて、スキーマを指定できます。
テーブルが多数ある場合は、少しタイプする必要がありますが、リストから名前を除外するだけで特定のテーブルを除外できます。
私も同じ問題を抱えていました。長いテーブルリスト。いくつかのテーブルからデータを除外します。
私がしたことは次のとおりです:
走る
pg_restore -l $pgdump_file > restore.pgdump.list
そのrestore.pgdump.list
ファイルをエディターで開き、次の行の前に;
を挿入します。
;2429; 0 27550 TABLE DATA public <table_to_explore> <database>
そのファイルを保存すると、インポートに使用できるようになります。;
で始まるすべての行は無視されます。
pg_restore -L restore.pgdump.list | psql
特定のテーブルを完全に無視したい場合は、特定のテーブル名を持つ行の前に;
を1行で追加することができます。
man pg_restore
も、ドキュメントの最後の例でこれについて説明しています。
ここでコマンドは機能しませんでした:
pg_restore -L restore.pgdump.list | psql
jesper Grann Laursenが答えました!
ここでは、次のシーケンスに従って機能しました。
pg_restore -l $pgdump_file > restore.pgdump.list
;2429; 0 27550 TABLE DATA public <table_to_explore> <database>
pg_restore -v -L restore.pgdump.list -d dbname pgdump.file
他の回答に基づくワンライナーは次のとおりです。
pg_restore -L <(pg_restore -l ~/base.bck | grep -ivE 'TABLE DATA public (exclude_tbl_name|exclude_tbl_name_2|exclude_tbl_name_3)') -d base_truncated ~/base.bck