db2se import_shape コマンド
db2se import_shape コマンドは、空間操作が有効になっているデータベースにシェイプ・ファイルをインポートします。
このコマンドは、シェイプ・データおよび属性データを既存の表または新しい表にインポートできます。
許可
Db2® インスタンス所有者 ID には、例外ファイルおよびメッセージ・ファイルを作成または書き込むために必要な、 Db2 サーバーに対する特権が必要です。
- Requirements to import into an existing table
- ユーザー ID は、以下の権限または特権のいずれかを持つ必要があります。
- DATAACCESS
- 表またはビューに対する CONTROL 特権
- 表またはビューに対する INSERT 特権と SELECT 特権
- Requirements to import into a new table
- ユーザー ID は、以下の権限または特権のいずれかを持つ必要があります。
- DBADM および DATAACCESS
- データベースに対する CREATETAB 権限
- 表のスキーマ名が存在しない場合、データベースでの IMPLICIT_SCHEMA 権限
- 表のスキーマが存在する場合は、スキーマに対する CREATEIN 特権。
コマンド構文
コマンド・パラメーター
- シェイプ・ファイルをインポートするデータベースの名前を指定します。
- database_name に指定したデータベースに対する DATAACCESS 権限を持つデータベース・ユーザー ID を指定します。
- user_id のパスワードを指定します。
- 指定されたデータのインポート先であるシェイプ・ファイルの完全なパス名を指定します。 ファイル拡張子として .shp または .SHP を指定すると、 Db2 Spatial Extender はまず、 -fileName パラメーターで指定した名前と完全に一致するものを探します。 Db2 Spatial Extender が完全一致を検出しない場合、まず .shp 拡張子を持つファイルを探し、次に .SHP 拡張子を持つファイルを探します。 Db2 サーバーに書き込まれるファイルの完全なリストについては、 使用上の注意 を参照してください。
このパラメーターの最大長は 256 文字です。
- dBASE ファイルからインポートする属性列のリストを指定します。 このパラメーターを指定しない場合、ファイル内のすべての列がインポートされます。 属性のリストを指定する場合は、以下のいずれかのフォーマットを使用します。
- 以下の例に示すような、dBASE ファイルからインポートする列の名前のコンマ区切りリスト。
N(COLUMN1,COLUMN5,COLUMN3,COLUMN7)
列名は、二重引用符で囲まないと、大文字に変換されます。 結果の名前は、dBASE ファイル内の列名と正確に一致する必要があります。
- 以下の例に示すような、dBASE ファイルからインポートする列の番号のコンマ区切りリスト。
列には1から始まる番号が付けられます。 リストの各番号は、コンマで区切らなければなりません。P(1,5,3,7)
- 属性データをインポートしないことを示す空ストリング
""
。
このパラメーターの最大長は 32,672 文字です。
- 以下の例に示すような、dBASE ファイルからインポートする列の名前のコンマ区切りリスト。
- 空間列にインポートする形状に使用する空間参照系 (SRS) を指定します。 srs_name 値は、二重引用符で囲んだ場合を除き、英大文字に変換されます。
空間列は登録されません。 SRS は、データをインポートする前に存在している必要があります。 インポート処理は、暗黙に SRS を作成することはしませんが、.prj ファイルがシェイプ・ファイルで使用可能な場合、そこに指定された座標系と SRS の座標系とを比較します。
またインポート処理は、シェイプ・ファイル内のデータの範囲が、指定された SRS 内で表現できることを検査します。 つまりインポート処理は、範囲が SRS の最小および最大の X、Y、Z、および M 座標内に収まるかどうかを検査します。
- 指定する table_name のスキーマ名を指定します。 スキーマ名を指定しない場合、CURRENT SCHEMA 特殊レジスターの値が表またはビューのスキーマ名として使用されます。
- シェイプ・ファイルのデータをインポートする表の名前 (修飾子なし) を指定します。 table_name 値は、二重引用符で囲んだ場合を除き、英大文字に変換されます。
- dBASE ファイルからの属性データを保管する表の列名。 このパラメーターを指定しない場合、dBASE ファイル内の列名が使用されます。
指定する列数は、dBASE ファイルからインポートする列数と一致する必要があります。 表が存在する場合、列の定義は、入ってくるデータと一致する必要があります。 属性のデータ・タイプを Db2 データ・タイプにマップする方法の説明については、 「使用上の注意」 を参照してください。
列名は、二重引用符で囲まないと、大文字に変換されます。 このパラメーターの最大長は 32,672 文字です。
- インポート処理で表を作成するかどうかを指定します。 このパラメーターに使用できる値は次のとおりです。
- create_flag にゼロ以外の値を指定すると、表を作成します。 表が存在する場合は、エラーになります。
- create_flag に値 0 を指定すると、既存の表を使用します。
このパラメーターを指定しない場合、新しい表が作成されます。
- 指定した table_name を作成する CREATE TABLE ステートメントに追加するオプションを指定します。何らかの CREATE TABLE オプションを指定するには、CREATE TABLE ステートメントの構文を使用します。 例えば、表、索引、およびラージ・オブジェクトを作成する表スペースを指定する場合は、以下のように tc_params に指定します。
IN tsName INDEX IN indexTsName LONG IN longTsName
このパラメーターの最大長は 32,672 文字です。
- シェイプ・データをインポートする表の空間列の名前を指定します。
新しい表の場合、このパラメーターは、作成される新しい空間列の名前を指定します。 既存の表の場合、このパラメーターには、表内の既存の空間列の名前を指定します。
spatial_column 値は、二重引用符で囲んだ場合を除き、英大文字に変換されます。
- type_name 値に指定した空間データ・タイプのスキーマ名を指定します。 このパラメーターを指定しない場合、DB2GSE がスキーマ名として使用されます。
type_schema 値は、二重引用符で囲んだ場合を除き、英大文字に変換されます。
- 空間値に使用するデータ・タイプの名前を指定します。 このパラメーターを指定しない場合、シェイプ・ファイルによって、以下のいずれかのデータ・タイプに決定されます。
- ST_Point
- ST_MultiPoint
- ST_MultiLineString
- ST_MultiPolygon
シェイプ・ファイルは、定義上、ポイントと複数ポイントの区別のみが可能です。 ポリゴンと複数ポリゴンの区別、および折れ線と複数折れ線の区別はできません。
新しい表にインポートする場合、type_name のデータ・タイプは、空間列のデータ・タイプとしても使用されます。 この場合、データ・タイプは、ST_Point、 ST_MultiPoint、ST_MultiLineString、または ST_MultiPolygon の スーパータイプにすることもできます。
type_name 値は、二重引用符で囲んだ場合を除き、英大文字に変換されます。
- 新しい表について、表内の空間列に割り振ることができる最大バイト数を指定します。 このパラメーターを指定しない場合、デフォルトのインライン長が使用されます。
inline_length サイズを超える空間レコードは LOB 表スペースに別に保管され、これのアクセスには時間がかかる可能性があります。
各種の空間タイプに必要な典型的なサイズは、次のとおりです。- 1 つのポイント: 292 バイト。
- 複数ポイント、折れ線、またはポリゴン: できるだけ大きい値。 1 行内の合計バイト数は、表が作成された表スペースのページ・サイズの限界を 超えられないことに注意しください。
inline_length 値の詳細な説明については、Db2 資料の CREATE TABLE ステートメントを参照してください。 ADMIN_EST_INLINE_LENGTH 表関数を使用すると、既存の表内で形状に必要なインライン長を見積もるために役立ちます。
- データの各行に対するユニークな番号を格納するために作成する列の名前を指定します。 この列のためのユニークな値は、インポート処理中に自動的に生成されます。 dBASE ファイル内の列名と一致する id_column 名を指定することはできません。 一部の空間ツールではユニーク ID を持つ列が必要です。このパラメーターの要件と効果は、表が既に存在するかどうかにより、次のようになります。
- 既存の表の場合、id_column パラメーターのデータ・タイプは、 整数タイプ (INTEGER、SMALLINT、BIGINT など) であればいずれのタイプでも構いません。
- 新しい表の場合、この列は以下のように定義します。
id_column_is_identity の値がゼロ以外である場合、この定義は以下のように拡張されます。INTEGER NOT NULL PRIMARY KEY
INTEGER NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY ( START WITH 1 INCREMENT BY 1 )
id_column 値は、二重引用符で囲んだ場合を除き、英大文字に変換されます。
- 指定された id_column が IDENTITY 節を使用して作成されるか どうかを示します。 id_column_is_identity にゼロ以外の値を指定すると、id_column 列は ID 列として作成されます。 このパラメーターは、既存の表の場合は無視されます。
- インポート操作が記録n+1から開始することを指定します。 最初の n 個のレコードはスキップされます。 このパラメーターを指定しない場合、レコード番号 1 から始めて、すべてのレコードがインポートされます。
- 少なくとも n レコードをインポートするたびに COMMIT を実行することを指定します。 このパラメーターを 指定しない場合、操作の最後に COMMIT が 1 回実行されます。 このため、ログ・ファイルの大量使用、および操作の中断によるデータ損失を招く可能性があります。
- インポートできなかったシェイプ・データを書き込むシェイプ・ファイルの絶対パス名を指定します。 このパラメーターを指定しない場合、例外ファイルは作成されません。
このパラメーターに値を指定し、オプションのファイル拡張子を含める場合は、 .shp または .SHP のいずれかを指定します。 拡張子を指定しない場合は、 .shp 拡張子が exception_fileに付加されます。
例外ファイルには、失敗した insert ステートメントの行セットがすべて格納されます。 1 つの insert ステートメントについて、複数行が追加される場合があります。 例えば、シェイプ・データが誤ってエンコードされているために、1 つの行をインポートできなかったとします。 1 つの insert ステートメントで、 この誤ったシェイプ・データの 1 行を含む 20 行をインポートしようとします。 insert ステートメントが失敗するために、20 行のセット全体が例外ファイルに書き込まれます。
レコードが例外ファイルに書き込まれるのは、それらのレコードを正しく識別できた場合 (例えば、シェイプ・レコード・タイプが無効である場合など) だけです。 シェイプ・データ (.shp ファイル) および形状索引 (.shx ファイル) に ある種の損傷が発生すると、該当するレコードが識別できなくなります。 この場合、例外ファイルにレコードは書き込めず、問題を報告するエラー・メッセージが出されます。
このパラメーターに値を指定すると、Db2 サーバーに 4 つのファイルが作成されます。 これらのファイルの説明については、 使用上の注意 を参照してください。
exception_file ファイルが既に存在する場合は、コマンドはエラーを戻します。
このパラメーターの最大長は 256 文字です。
- Db2 Spatial Extender がインポート操作に関するメッセージを書き込む、 Db2 サーバー内のファイルの絶対パス名を指定します。 このパラメーターを指定しない場合、 Db2 Spatial Extender はメッセージ・ファイルを作成しません。メッセージ・ファイルには、以下のタイプのメッセージが書き込まれます。
- インポート操作のサマリーなどの、通知メッセージ
- インポートできなかったデータのエラー・メッセージ (例えば、座標系が異なるなどの理由から) これらのエラー・メッセージは、指定した exception_file 例外ファイルに保管される シェイプ・データに対応します。
msg_file_name ファイルが既に存在する場合、コマンドはエラーを戻します。
このパラメーターの最大長は 256 文字です。
- インポート操作をクライアントと Db2 サーバーのどちらで実行するのか、およびファイルの作成場所を指定します。 このパラメーターに使用できる値は次のとおりです。
- 0: インポート操作を Db2 サーバー上で実行し、ファイルには Db2 サーバーからアクセスするように指定します。
- 1: インポート操作をクライアント上で実行し、ファイルにはクライアントからアクセスするように指定します。
このパラメーターを指定しない場合、デフォルトは値 0 です。
使用上の注意
コマンドを実行するクライアント上で、インポート処理を実行できます。 Db2 サーバーのファイル・システムにアクセスする必要がないため、多くの場合、この方が便利です。
- メインのシェイプ・ファイル (.shp 拡張子)。 このファイルは必須です。
- 形状索引ファイル (.shx 拡張子)。 このファイルはオプションです。 これが存在すれば、インポート操作のパフォーマンスを改善できます。
- 属性データを含む dBASE ファイル (.dbf 拡張子)。 このファイルは、属性データをインポートする場合のみ必要です。
- シェイプ・データの座標系を指定する展開ファイル (.prj 拡張子)。 このファイルはオプションです。 このファイルが存在すると、この中で定義された座標系が、srs_id パラメーターで指定された空間参照系の座標系と比較されます。
.dbf タイプ | .dbf の長さ1 | .dbf の小数部 2 | SQL タイプ | コメント |
---|---|---|---|---|
N | < 5 | 0 | SMALLINT | |
N | < 10 | 0 | INTEGER | |
N | < 20 | 0 | BIGINT | |
N | 長さ | 10 進数 | DECIMAL (len,dec) | len<32 |
F | 長さ | 10 進数 | REAL | len + dec < 7 |
F | 長さ | 10 進数 | DOUBLE | |
C | 長さ | CHAR (長さ) | ||
L | CHAR(1) | |||
D | 日付 |
- len は、dBASE ファイル内の列の合計の長さを表します。 Db2 Spatial Extender は、この値を次の 2 つの目的で使用します。
- SQL データ・タイプ DECIMAL の精度、または SQL データ・タイプ CHAR の長さを定義するため
- どの整数タイプまたは浮動小数点タイプを使用するかを決めるため
- dec は、dBASE ファイルにおいて、列の小数点の右側にある桁数の最大値を表します。 Db2 Spatial Extender は、この値を使用して、SQL データ・タイプ DECIMAL のスケールを定義します。
例えば、dBASE ファイルに 1 つのデータの列があり、その長さ (len) が 20 と定義されているとします。 小数点の右側の桁数(dec)が5と定義されていると仮定します。 Db2 Spatial Extender は、その列からデータをインポートするときに、 len および dec の値を使用して、SQL データ・タイプ DECIMAL (20, 5) を派生させます。
例
db2se import_shape mydb -fileName myfile -srsName NAD83_SRS_1
-tableName mytable -spatialColumnName mycolumn -client 1