2012-03-15 17 views
1

次のコマンドを使用して、サーバのデータベースからいくつかの構造をダンプして、ローカルハードドライブ上のデータのサンプルを作成することができます。エクスポートでPL/pgSQL関数を除外する方法は?

pg_dump -h myserver.com -U product_user -s -f ./data/base.structure.postgresql.sql -F p -v -T public.* -T first_product.* -T second_product.* -T another_product.locales mydatabase 

いくつかのスキーマを除外する必要があります。それ以外の場合、権限やその他のエラーが発生します。でも、私は、スキーマの公共を除外すること、それはこのように、そのスキーマ内のすべての機能をダンプします。

REVOKE ALL ON FUNCTION gin_extract_trgm(text, internal) FROM PUBLIC; 
psql:./data/base.structure.postgresql.sql:8482: ERROR: function gin_extract_trgm(text, internal) does not exist 

私は、これはPostgreSQLの全文または類似のプラグインから来ているけど、私はそれを使用していないとする必要はありませんそれは私のマシン上にあるので、私はこれらの機能を除外したいと思います。

どうすればいいですか?

pg_dump -N schema ... 

私はthe manual about pg_dump引用:

-Nスキーマ
を私は

pg_dumpはへの切り替えがスキーマを除外しているいくつかのスキーマを除外する必要が

答えて

3

--exc lude-schema = schema

スキーマパターンと一致するスキーマをダンプしないでください。パターンは、-nと同じ規則に従って解釈されます。 -Nには、複数のパターンのいずれかと一致するスキーマを除外するには、複数回指定することができます( )。
...


のPostgreSQL 9.1 して以降、あなたが別のスキーマに拡張を移動するための新しいオプションがある - にもプリインストールされ、古い形式のモジュールを。古いオブジェクトを(新しいスタイルの)拡張機能に登録し、新しいツールを使用することができます。 fulltextと​​の場合は、おそらくfuzzystrmatchtsearch2を意味します。例:

CREATE EXTENSION fuzzystrmatch SCHEMA public FROM unpackaged; 

ドロップ拡張子:もちろん

CREATE EXTENSION fuzzystrmatch SCHEMA my_schema; 

DROP EXTENSION fuzzystrmatch; 

は別のスキーマにそれをインストールしてください

登録するには、拡張子fuzzystrmatchのために古いスタイルのオブジェクトを既存のそのオブジェクトが使用されている場合は、その拡張を削除することはできません。
また、別のスキーマにインストールする場合は、その機能をスキーマ修飾するか、search_pathにスキーマを追加する必要があります。

6

これを行う方法があります。バックアップの名前がbackup.dumpであるとします。あなたがする必要があるのは:

$ pg_restore -l -f out.txt backup.dump 

これは、ダンプ内にあるオブジェクトのリストを含むファイルを作成します。ファイルを編集し、復元したくない項目を削除する必要があります。

$ pg_restore -L out.txt -h your.host.name -U username .... backup.dump 

これは復元するものを選択するために(編集した)ファイルout.txtを使用します。特に、ダンプが大きく、データベースを再ダンプできない場合に便利です。

関連する問題