ArcSDE コマンドを使用した、ある格納タイプから別の格納タイプへのジオメトリの移行
Oracle や Microsoft SQL Server のジオデータベース内のフィーチャクラスで使用されているジオメトリ格納を、sdelayer コマンドの migrate 操作を使用して変更できます。migrate 操作では、フィーチャクラスのジオメトリ格納が、-k オプションで指定した DBTUNE コンフィグレーション キーワードのジオメトリ格納タイプに変更されます。
正しいパラメータと値が含まれるようにキーワードを適切に作成することが重要です。不正確な情報や欠落した情報のあるキーワードを指定すると、その情報が DEFAULTS キーワードから読み取られます。このため、移行専用のカスタム キーワードを作成し、そのキーワードにデータ移行先のパラメータと値、および UI_TEXT パラメータが含まれていることを確認することをお勧めします。UI_TEXT パラメータにより、キーワードは ArcGIS クライアントで利用できるようになります。
migrate 操作を指定した sdelayer コマンドの構文は次のようになります。
sdelayer –o migrate –l <table,column> –k <config_keyword> [–i {<service> | <direct_connect>}] [–s <server>] -D [<database_name>] –u <user_name> [–p <user_password>] [–N] [–q]
使用できるオプションは以下のとおりです。
オプション |
説明 |
---|---|
-D | このオプションを使用してデータベース名を指定します。このオプションは、Oracle データベースでは使用しません。 |
–o |
このオプションは、実行する操作(ここでは migrate)を指定します。 |
-l |
このオプションを使用して、フィーチャクラスのビジネス テーブルの名前と、ジオメトリ タイプを移行するシェープ カラムの名前を指定します。2 つの名前はカンマで区切ります(スペースなし)。 |
–k |
このオプションは、移行後のフィーチャクラスのジオメトリ格納タイプを示す DBTUNE コンフィグレーション キーワードを指定します。キーワードには、Oracle データベースの場合は SDELOB または ST_GEOMETRY に設定した GEOMETRY_STORAGE パラメータ、SQL Server データベースの場合は GEOMETRY または GEOGRAPHY に設定した GEOMETRY_STORAGE パラメータを含める必要があります。 |
–i |
使用するダイレクト コネクション構文、またはジオデータベースへの接続に使用する ArcSDE サービスのポート番号またはサービス名を指定します。 ダイレクト コネクション構文については、「ArcSDE コマンドから Oracle のジオデータベースへのダイレクト コネクション」または「ArcSDE コマンドから SQL Server のジオデータベースへのダイレクト コネクション」をご参照ください。 |
–s |
データベースが存在するサーバの名前を指定します。 |
–u |
フィーチャクラス所有者がデータベースにログインするためのユーザ名を指定します。 |
–p |
ユーザのパスワードを指定します。 |
–N |
操作を確認するプロンプトが表示されないようにするには、このオプションを指定します。 |
–q |
すべてのタイトルや警告が表示されないようにするには、このオプションを指定します。 |
次のいずれかに該当する場合は、migrate 操作を指定した sdelayer コマンドを実行すると、エラー メッセージが表示されます。
- データが低精度で格納されている場合
- -u で指定したユーザがテーブル所有者ではない場合
- フィーチャクラスの既存の格納タイプが、指定された DBTUNE キーワードと同じである場合(つまり、キーワードで指定した格納タイプがすでにテーブルで使用されているため、移行が不要な場合)
- ビジネス テーブルにオブジェクト ID フィールドが含まれていない場合
- 9.2 よりも前の ArcSDE ジオデータベースで migrate 操作を使用した場合
- Oracle または SQL Server 以外の DBMS で migrate 操作を使用した場合
- 3D フィーチャが含まれる SDO_Geometry フィーチャクラスを移行しようとした場合。3D の Oracle Spatial ジオメトリからの WKB 表現または WKT 表現の生成は、Oracle Spatial ではサポートされていないため、このようなデータを sdelayer コマンドで移行することはできません。
1 つ目の項目で示したように、ジオメトリ格納を移行する前に、まずフィーチャクラスを低精度から高精度に移行する必要があります。これは、alter 操作を指定した sdelayer コマンドか、[空間参照の更新(Upgrade Spatial Reference)] ジオプロセシング ツールを使用して実行できます。
migrate 操作を使用して Oracle データベース内のデータ格納タイプを移行すると、データのコピー先となる新しいセグメントがデータベース内に作成されます。移行が完了すると、メタデータのポイント先は新しいセグメントに再設定され、古いセグメントは削除されます。これは、移行中のある時点ではデータのコピーが 2 つ存在することを意味します。したがって、データベースには 2 つのコピーを格納するための十分な容量が必要です。
-
移行するデータのバックアップを作成します。
移行するデータのバックアップ コピーを作成しておくと、何らかの理由で移行が失敗した場合でも元のデータを復元できます。
- DOS コマンド プロンプト(Windows の場合)またはシェル(UNIX または Linux の場合)を開きます。
-
migrate 操作を指定した sdelayer コマンドを実行します。たとえば、次のように入力します。
sdelayer –o migrate –l colpts,geometry –k ST_GEOMETRY –i 68910 –s mainserver –u bjar –p mine.all.min
変換後のデータのタイプを示す GEOMETRY_STORAGE 値が含まれるコンフィグレーション キーワードを必ず指定してください。