pg_restore
を使用して、ダンプファイルから新しく作成されたデータベースを復元する方法を探していますが、そこから特定のテーブルのみファイル。 (データベースには、復元に時間がかかり、気にしない余分なテーブルがたくさんあります。)
私は最初にpg_restore
を-t
/--table
フラグで試しましたが、それらのテーブルに必要な拡張機能が有効になりませんでした。大したことではありません。 psql -c "CREATE EXTENSION ..."
コマンドの前にpg_restore
を手動で実行できます。私のより大きな問題は、-t
コマンドが、制約やインデックスなど、テーブルに関連する他のことをスキップするように見えることです。
インデックスは煩わしいですが、pg_restore --list
を実行してawk
/grep
/etcを使用できます。インデックスのリストを取得し、それらをpg_restore
に-I
/--index
フラグを付けて渡すため、プロセスは次のようになります(と思います)。
pg_restore -t table1 -t table2 --schema-only ...
pg_restore -I index1 -I index2 ...
pg_restore -t table1 -t table2 --data-only ...
しかし(a)それでも私には制約が設定されません(b)のためのこのラウンドアバウトの解決策でウサギの穴を下りているように感じます私が簡単だと思ったもの。
特定のテーブルのみをダンプするようにpg_dump
に指示できることは知っていますが、データベースのダンプを作成するのに長い時間がかかるため、それを回避したいと思っていました。
「カスタム」フォーマットを使用している場合は、-l
(エル)および-L
オプションを使用してこれを行うことができます。
pg_restore -l /path/to/dump/file > table_of_contents.txt
を実行しますpg_restore ... -L table_of_contents.txt /path/to/dump/file
でデータベースを復元する利益!