2016-07-11 2 views
2

私のデータベースには、m_ *などで始まるマスターテーブルがあります。次のようなシナリオでテーブルの後ろをとってみたい。いくつかのテーブルのマスターデータとスキーマをバックアップするPostgres

  1. バックアップスキーマ+マスター表のデータは、テーブルの残りのためのM_ *
  2. Backuoスキーマ構造で始まるテーブル名をすなわち。

私はどこか

pg_dump -U "postgres" -h "local" -p "5432" 
    -d dbName -F c -b -v -f c:\uti\backup.dmp 
    --exclude-table-data '*.table_name_pattern_*' 
    --exclude-table-data 'some_schema.another_*_pattern_*' 

次のコマンドを読みました。しかし、私は非常に多くのテーブルを持っていると私はそれが面倒なことに、各テーブル名を入れて検索します。それを回避するためのきちんとした方法はありますか? Linuxを使用して

答えて

1

ファイルfoo.sh(フィルタリング条件を調整する):

psql <connection and other parameters> -c "copy (select format('--exclude-table-data=%s.%s', schemaname, tablename) from pg_tables where schemaname in ('public', 'foo') and tablename<>'t') to stdout;" 

コマンド(バッククォートに関する注意):それは非常に柔軟なアプローチであることを

pg_dump <connection and other parameters> `./foo.sh` 

注意。

関連する問題