ArcGIS におけるデータベース間でのデータのコピーと貼り付け
ArcGIS for Desktop を利用して、データベースのデータをコピーし、別のデータベースまたはジオデータベースに貼り付けることができます。
あるデータベース タイプのデータを別のデータベース タイプに移動する場合、テーブルの属性に使用されているデータ タイプが変化する場合があります。たとえば、SQL Server から UniqueIdentifier フィールドを含むテーブルをコピーして、これを PostgreSQL データベースに貼り付けると、フィールドは Varchar フィールドになります。
ArcGIS は、サポートしないデータ タイプや定義を貼り付けることができません。つまり、コピー先データベースに作成されるテーブルやフィーチャクラスには、以下のものが含まれます。
- ArcGIS でサポートされるデータ タイプ
ArcGIS のデータ タイプにマッピングできない列は、コピー先データベースのフィーチャクラスに作成されません。サポートされるデータ タイプのリストについては、「ArcGIS でサポートされているデータ タイプ」をご参照ください。
- 1 つの空間列
フィーチャクラスでは、最初に見つかった空間列が使用されます。2 番めの空間列は、コピー先フィーチャクラスに作成されません。2 番目の空間列を使用する場合は、コピー元テーブルに対して、2 番目の空間列だけを持つビューまたはクエリ レイヤを定義します。ビューを作成した場合、コピー元データベースからコピー先データベースに空間列をコピーできます。クエリ レイヤを作成した場合、クエリ レイヤからコピー先データベースの新しいフィーチャクラスにデータをエクスポートできます。
- 1 つのジオメトリ タイプ
コピー元フィーチャクラスに複数のジオメトリ タイプ(ポイント、ライン、ポリゴン、マルチポイント)がある場合、ArcGIS はフィーチャクラスをコピー先データベースに貼り付けるときに、コピー元フィーチャクラスの最初の行にあるジオメトリ タイプを使用します。コピー先フィーチャクラスで使用するジオメトリ タイプを制御する場合は、コピー元フィーチャクラスに対してクエリ レイヤを作成し、使用するジオメトリ タイプを定義してから、クエリ レイヤからコピー先データベースにデータをエクスポートします。これを実行すると、コピー先データベースに作成されたフィーチャクラスには、クエリ レイヤで定義されたジオメトリ タイプのレコードだけが含まれるようになります。
- 1 つの次元
コピー元フィーチャクラスのレコードがさまざまな次元(xy、xyz、xym、xyzm)で定義されている場合、ArcGIS はコピー元フィーチャクラスの最初の行にある次元を使用します。その次元と一致しないレコードは、コピー先フィーチャクラスに作成されません。コピー先フィーチャクラスで使用する次元を指定する場合は、コピー元フィーチャクラスに対してクエリ レイヤを作成し、使用する次元を定義します。そして、クエリ レイヤからコピー先データベースにデータをエクスポートします。これを実行すると、コピー先データベースに作成されたフィーチャクラス内のすべてのレコードは、その次元を使用します。たとえば、z 次元を持ち、m 次元を持たないクエリ レイヤを定義した場合、コピー元フィーチャクラスで m 次元情報を持っていたレコードは、コピー先のフィーチャクラスではその情報を持たなくなります。同様に、コピー元フィーチャクラスで X 座標と Y 座標だけを持っていたレコードは、コピー先フィーチャクラスでは X、Y、Z 座標を持つようになります(Z 座標は 0 に設定されます)。
- 1 つの空間参照
コピー元フィーチャクラスに ArcGIS が認識する空間参照が定義されている場合、コピー先データベースのフィーチャクラスでも同じ空間参照が使用されます。フィーチャクラスに空間参照が定義されていない場合は、テーブルの最初の行の空間参照が使用されます。その空間参照に一致しないレコードは、コピー先データベースのフィーチャクラスに作成されません。また、テーブルまたは最初の行で空間参照を識別できない場合(たとえば、カスタム空間参照が使用されている場合)、コピー先フィーチャクラスで使用される空間参照は、使用している DBMS によって変わります。詳細については、「空間参照」のセクション「ArcGIS での空間参照系の使用」をご参照ください。
以下の手順では、コピーおよび貼り付けを使用して、データベースからデータベースまたはジオデータベースからデータベースに、テーブル、フィーチャクラス、またはビューを移動する方法について説明します。
- ArcMap を開始して、カタログ ウィンドウを開きます。
- カタログ ツリーで、コピー元データベースとコピー先データベースへの接続を確立します。
コピー元データベースには、コピー元データベースのデータにアクセスできる権限を持つユーザとして接続します。また、コピー先データベースには、テーブルを作成できるデータベース権限を持つユーザとして接続します。
- 必要な場合は、フィーチャクラスから移動するデータや複数の空間列を準備して、コピー元フィーチャクラスのプロパティに作成するプロパティと列を決定します。
クエリ レイヤを作成する場合は、次の手順に進んで、データをコピー先データベースに移動します。
- 移動するフィーチャクラスに異なる次元、ジオメトリ タイプ、または空間参照を持つレコードがある場合、テーブルをマップにドラッグし、その結果のクエリ レイヤを変更して、1 つの次元、ジオメトリ タイプ、または空間参照を選択します。データをコピー先データベースに移動するには、クエリ レイヤをエクスポートします(クエリ レイヤをコピーおよび貼り付けることはできません)。
- フィーチャクラスに複数の空間列がある場合、いずれかの空間列だけを含むデータベース ビューを作成し、コピーおよび貼り付けます。
- コピー元データベースのテーブル、フィーチャクラス、またはビューを右クリックし、[コピー] をクリックします。
- カタログ ツリーでコピー先データベースを右クリックし、[貼り付け] をクリックします。
コピー先データベースのデータは、接続に使用したログインによって所有されます。
注意:データを PostgreSQL または SQL Server データベースに貼り付けるには、コピー先データベースに接続したユーザが、データベース ユーザ名と同じ名前のスキーマを所有している必要があります。
- フィーチャクラスを移動する場合は、[データ転送] ダイアログ ボックスが表示され、コピー先データベースで空間列に使用する空間タイプを選択できます。[コンフィグレーション キーワード] 列をクリックし、ドロップダウン リストで空間タイプを選択して、[OK] をクリックします。
コピー先データベースに、新しいテーブルまたはフィーチャクラスが作成されます。