pg_dumpを利用してバックアップをする場合、バックアップ時間の短縮・バックアップファイル容量の削減のために、Temporary的に利用するテーブルはスキーマのみをバックアップしたい場合がある。
その場合は、下記のように2回にコマンドを分けることでできる。(一回のコマンドではできないはず)
1.データ・スキーマ両方取得したいテーブル群をdump
「-T」を指定することで、特定のテーブルをdump対象から除外できるので、tmp系以外をdumpする。(ワイルドカード指定可能)
pg_dump -U [ユーザID] -d [DB名] -h [host名] -T 'tmp*' > dump.sql
※ スキーマのみ取得したいテーブルは「tmp」から始まるものとする。
2.スキーマのみ取得したいテーブル群をdump
「-t」を指定することで、特定のテーブルのみをdump対象にできる。
さらに、「-s」を指定することで、スキーマのみをdump対象にできる。ここでtmp系のみをdumpする。
その際「>>」で先ほど出力したファイルに追記出力する。
pg_dump -U [ユーザID] -d [DB名] -h [host名] -t 'tmp*' -s >> dump.sql
これでtmp系テーブルはスキーマのみ、それ以外のテーブルはデータを含んだ形のバックアップファイルが作成できる。
※ 上記手順は、どちらが先でも問題なし