古いPostGISデータベース(バージョン "1.1.6")にかなりのGISデータがあり、それを別のPostGISデータベース( "POSTGIS =" 1.5.3 ")に転送する必要があります。
バックアップを作成して新しいデータベースに復元してみましたが、数百のエラーが発生します。
データを転送する正しい方法は何ですか?
古いPostGISデータベース(バージョン "1.1.6")にかなりのGISデータがあり、それを別のPostGISデータベース( "POSTGIS =" 1.5.3 ")に転送する必要があります。
バックアップを作成して新しいデータベースに復元してみましたが、数百のエラーが発生します。
データを転送する正しい方法は何ですか?
回答:
よると、ポール・ラムジー:
まず、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のアップグレードに関するセクションもあります。
通常のテーブルと「ジオメトリのあるテーブル」を確認し、(シェル/ UNIX端末で)使用します。
pg_dump
通常のテーブルをエクスポートする場合(でインポートpsql
)pgsql2shp
geoテーブルをエクスポートし、shp2pgsql
インポートします。最後のもの(pgsql2shp)は、「古いPostGISデータから新しいPostGISデータへ」バージョンをエクスポートするときのpg_dumpの「バグ」用です。もちろん、バグがなければ、pg_dumpだけで十分です。
最初に@RKの推奨事項を確認してくださいpsql -f postgis_upgrade_1X_to_15.sql -d your_spatial_database
...一般的に(ボットは常にではありません)okです... pgsql2shpが最後のオプションです。
他の回答に同意し、pg_dumpメソッドを使用しました。もう1つの利点は、ダンプをzipまたはtarなどに圧縮し、必要に応じて別のサーバーに移動できることです。