PostGISデータベース間でデータを転送するにはどうすればよいですか?


8

古いPostGISデータベース(バージョン "1.1.6")にかなりのGISデータがあり、それを別のPostGISデータベース( "POSTGIS =" 1.5.3 ")に転送する必要があります。

バックアップを作成して新しいデータベースに復元してみましたが、数百のエラーが発生します。

データを転送する正しい方法は何ですか?


エラーにもかかわらずそれが機能するかどうかをテストしましたか?
RK 2012

@RKはい、機能します。気づかないかもしれない微妙なデータ破損があるかもしれないと感じました。エラーなしでデータを転送するより良い方法があるかどうかも疑問に思っていました。
Devdatta Tengshe、2012年

回答:


6

よると、ポール・ラムジー

まず、PostgreSQLとPostGISでのパッチバージョンの増加(例:XYZ-> XY(Z + 1))では、新しいソフトウェアをインストールする以外に何もする必要はありません。データはそのままにしておくことができ、すべてが正常に機能します。

PostgreSQLのマイナーバージョンの増加(例:XYZ-> X.(Y + 1).Z)の場合、ダンプして復元する必要があります。PostGISでのマイナーバージョンの増加については、「ソフトアップグレード」を実行する必要があります。つまり、データをそのままにして、ソフトウェアアップデートをインストールした後にアップグレードスクリプト(postgis_upgrade_14_to_15.sqlなど)を実行します。

最後に、PostgreSQLとPostGISのメジャーバージョンの増加(例:XYZ->(X + 1).YZ)の場合、ダンプして復元する必要があります。

データをパブリックスキーマに保存しましたか?

これにより、私が作成したい実際のポイントにたどり着きます。「パブリック」スキーマにデータを格納しないようにすると、PostGISデータのダンプと復元を最も簡単に実行できます。

パブリックスキーマにデータを保存しても、すべてが失われるわけではありません

「しかし、ポール」とあなたは言います、「私はすでに完全なデータベースダンプを持っています、それは私がSOLであることを意味しますか?」いいえ、しかし強い胃が必要になります。まず、新しいPostgreSQLをセットアップします。空のデータベースを作成し、PostGISをそのデータベースに読み込みます。次に、バックアップファイルをそのデータベースにロードします。多くのエラーが表示されます。ただし、これらのエラーは、データベース内の既存のタイプ定義と競合する、ダンプファイルの古いPostGIS関数およびタイプ定義が原因で発生します。そして、古い定義ではなく新しい定義が必要なので、それで問題ありません。すべてのノイズとエラーにもかかわらず、負荷は実際に機能するはずです。完了したら、データを適切な別のスキーマに移動できるため、次回はエラーのないクリーンな復元を実行できます。

エラーにもかかわらずそれが機能するかどうかをテストしましたか?

PostGISサイトには、PostGISのアップグレードに関するセクションもあります。


それで、基本的に公開スキーマは一時テーブル用ですか?
ニックス2012

3
いいえ。それは単に「PostGIS関数とシステムテーブルがインストールされる場所なので、そのスキーマをダンプすると、それらの定義がすべてダンプに含まれます。」元のバージョンと同じバージョンの別のPostGISデータベースに移動する場合は問題ありませんが、定義データベースが異なるバージョンの場合は問題になる可能性があります。新しいバージョンには、パブリックスキーマの定義と競合する可能性のある異なる関数定義がある場合があります。
RK 2012

2

通常のテーブルと「ジオメトリのあるテーブル」を確認し、(シェル/ UNIX端末で)使用します。

  • pg_dump通常のテーブルをエクスポートする場合(でインポートpsql
  • pgsql2shpgeoテーブルをエクスポートし、shp2pgsqlインポートします。

最後のもの(pgsql2shp)は、「古いPostGISデータから新しいPostGISデータへ」バージョンをエクスポートするときのpg_dumpの「バグ」用です。もちろん、バグがなければ、pg_dumpだけで十分です。

最初に@RKの推奨事項を確認してくださいpsql -f postgis_upgrade_1X_to_15.sql -d your_spatial_database...一般的に(ボットは常にではありません)okです... pgsql2shpが最後のオプションです。


1

他の回答に同意し、pg_dumpメソッドを使用しました。もう1つの利点は、ダンプをzipまたはtarなどに圧縮し、必要に応じて別のサーバーに移動できることです。


pg_dumpは、PostGISデータをいくつかの「バグ」とともにエクスポートします...古いpostGISバージョンを新しいバージョンにエクスポートするとき、pgsql2shpはジオメトリをより適切にエクスポートします。
Peter Krauss
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.