コマンド解説書

IMPORT

外部ファイルのデータを、サポートされているファイル形式で表、階層、 または視点に挿入します。 より高速な代替方法は LOADです。 しかしロード・ユーティリティーでは、 階層レベルのデータのロードはサポートされていません。

許可

必須接続

データベース。 暗黙接続が可能な場合には、省略時データベースへの接続が確立されます。

コマンド構文

>>-IMPORT FROM--filename--OF--filetype-------------------------->
 
>-----+-----------------------------+--------------------------->
      |            .-,-----------.  |
      |            V             |  |
      '-LOBS FROM-----lob-path---+--'
 
>-----+-----------------------------------+--------------------->
      |              .-----------------.  |
      |              V                 |  |
      '-MODIFIED BY-----filetype-mod---+--'
 
>-----+-----------------------------------------------------------------------------------------------------------------+>
      |                 .-,---------------------------.                                                                 |
      |                 V                             |                                                                 |
      '-METHOD--+-L--(-----column-start--column-end---+---)--+-----------------------------------------------------+-+--'
                |                                            |                     .-,----------------------.      | |
                |                                            |                     V                        |      | |
                |                                            '-NULL INDICATORS--(-----null-indicator-list---+---)--' |
                |       .-,--------------.                                                                           |
                |       V                |                                                                           |
                +-N--(-----column-name---+---)-----------------------------------------------------------------------+
                |       .-,------------------.                                                                       |
                |       V                    |                                                                       |
                '-P--(-----column-position---+---)-------------------------------------------------------------------'
 
>-----+-----------------+---+------------------+---------------->
      '-COMMITCOUNT--n--'   '-RESTARTCOUNT--n--'
 
>-----+-------------------------+------------------------------->
      '-MESSAGES--message-file--'
 
>-----+--+-INSERT---------+--INTO--+-table-name--+------------------------------+-+-------------------+>
      |  +-INSERT_UPDATE--+        |             |    .-,----------------.      | |                   |
      |  +-REPLACE--------+        |             |    V                  |      | |                   |
      |  '-REPLACE_CREATE-'        |             '-(-----insert-column---+---)--' |                   |
      |                            '-| hierarchy description |--------------------'                   |
      |                                                                                               |
      '-CREATE--INTO--+-table-name--+------------------------------+----------+---| tblspace-specs |--'
                      |             |    .-,----------------.      |          |
                      |             |    V                  |      |          |
                      |             '-(-----insert-column---+---)--'          |
                      '-| hierarchy description |--+-AS ROOT TABLE----------+-'
                                                   '-UNDER--sub-table-name--'
 
>-----+--------------------------------------------+-----------><
      '-DATALINK SPECIFICATION--| datalink-spec |--'
 
hierarchy description
 
    .-ALL TABLES---------.
|---+-| sub-table-list |-+--+----+------------------------------>
                            '-IN-'
 
>----HIERARCHY--+-STARTING--sub-table-name--+-------------------|
                '-| traversal-order-list |--'
 
sub-table-list
 
       .-,--------------------------------------------------.
       V                                                    |
|---(-----sub-table-name--+------------------------------+--+---)-->
                          |    .-,----------------.      |
                          |    V                  |      |
                          '-(-----insert-column---+---)--'
 
>---------------------------------------------------------------|
 
traversal-order-list
 
       .-,-----------------.
       V                   |
|---(-----sub-table-name---+---)--------------------------------|
 
tblspace-specs
 
|---+--------------------------------------------------------------------------------------+->
    '-IN--tablespace-name--+----------------------------+---+---------------------------+--'
                           '-INDEX IN--tablespace-name--'   '-LONG IN--tablespace-name--'
 
>---------------------------------------------------------------|
 
datalink-spec
 
    .-,--------------------------------------------------------------------------------------------------.
    V                                                                                                    |
|------(--+-----------------+--+----------------------------------+---+--------------------------+---)---+->
          '-DL_LINKTYPE URL-'  +-DL_URL_REPLACE_PREFIX--"prefix"--+   '-DL_URL_SUFFIX--"suffix"--'
                               '-DL_URL_DEFAULT_PREFIX--"prefix"--'
 
>---------------------------------------------------------------|
 

コマンド・パラメーター

ALL TABLES
暗黙のキーワード (階層のみ)。 階層をインポートする場合、 走査順序で指定されるすべての表をインポートすることが省略時値です。

AS ROOT TABLE
1 つまたは複数の副表を、独立した表階層として作成します。

COMMITCOUNT n
n 個のレコードがインポートされるたびに COMMIT を実行します。

CREATE
表定義と行の内容を作成します。 DB2 の表、副表、または階層からエクスポートされたデータの場合、索引も作成されます。 このオプションが階層に対するものである場合で、 DB2 からデータがエクスポートされた場合には、タイプ階層も作成されます。 このオプションは、IXF ファイルの場合にのみ使用することができます。

注:データが MVS ホスト・データベースからエクスポートされたもので、 ページ・サイズで計算した長さが 254 より少ない LONGVAR フィールドを含んでいる場合、 CREATE は行が長過ぎるために失敗します。 この場合、その表は手動で作成します。 そして、IMPORT に INSERT を指定して呼び出すか、または LOAD コマンドを使用してください。

DATALINK SPECIFICATION
各 DATALINK 列ごとに、それぞれ 1 つの列指定を括弧で囲んで指定できます。 各列指定は、1 つまたは複数の DL_LINKTYPE、接頭部、および DL_URL_SUFFIX 指定で構成されます。 接頭部指定は、DL_URL_REPLACE_PREFIX または DL_URL_DEFAULT_PREFIX のどちらかになります。

DATALINK 列指定の数は、表で定義されている DATALINK の数と同じだけ定義できます。 指定の順序は、挿入列 リストの中での DATALINK 列の順序、 または表定義内での順序 (挿入列 リストが指定されていない場合) に従います。

DL_LINKTYPE
指定した場合は、列定義の LINKTYPE に一致していなければなりません。 そうすることによって、 列定義に LINKTYPE URL が指定されている場合に DL_LINKTYPE URL が受け入れ可能になります。

DL_URL_DEFAULT_PREFIX "prefix"
これを指定すると、 同じ列内のすべての DATALINK 値の省略時接頭部になります。 ここでいう接頭部とは、URL 指定の「スキーム・ホスト・ポート」部分のことです。 (分散ファイル・システム (DFS) の場合、 接頭部とは URL 指定の「スキーム・セル名とファイル・スペースの接合」部分のことです。)

接頭部の例

   "http://server"
   "file://server"
   "file:"
   "http://server:80"
   "dfs://.../cellname/fs"

列のデータの中に接頭部がない場合、 DL_URL_DEFAULT_PREFIX で省略時の接頭部が指定されているなら、 列の値の接頭部としてその省略時接頭部が付けられます (NULL でない場合)。

たとえば、 DL_URL_DEFAULT_PREFIX で省略時接頭部が "http://toronto" として指定されている場合、

DL_URL_REPLACE_PREFIX "prefix"
この文節は、 それ以前にエクスポート・ユーティリティーによって生成されたデータをロードまたはインポートする際に、 ユーザーがデータに含まれるホスト名を別のホスト名に一括置換したい場合に便利です。 指定する場合には、 それがすべての 非 NULL 列値の接頭部になります。 列値にすでに接頭部があるなら、それは置き換えられます。 列値に接頭部がないなら、 DL_URL_REPLACE_PREFIX で指定される接頭部がその列値の接頭部になります。 分散ファイル・システム (DFS) の場合、 接頭部とは URL 指定の「スキーム・セル名とファイル・スペースの接合」部分のことです。

たとえば、DL_URL_REPLACE_PREFIX で接頭部が "http://toronto" として指定されている場合、

DL_URL_SUFFIX "suffix"
これを指定すると、それはその列のすべての非 NULL 列値に付加されます。 これは実際には、DATALINK 値の URL 部分の「パス」構成要素に付加されます。

FROM filename
インポートするデータを含むファイルを指定します。 パスを省略すると、現行の作業ディレクトリーが使用されます。

HIERARCHY
インポートする階層データを指定します。

IN tablespace-name
表を作成する表スペースを指定します。 表スペースは存在している必要があり、REGULAR 表スペースでなければなりません。 他の表スペースを指定しない場合、すべての表パーツはこの表スペースに保管されます。 この文節を指定しない場合、表は許可 ID によって作成された表スペース中に作成されます。 何も検出されない場合、その表は省略時表スペースの USERSPACE1 に入れられます。 USERSPACE1 が消去されていた場合、表作成は失敗します。

INDEX IN tablespace-name
表示に対して索引を作成する場合、索引を作成する表スペースを指定します。 このオプションは、 IN 文節で指定した 1 次表スペースが DMS 表スペースである場合のみ使用できます。 指定した表スペースは存在している必要があり、 かつ REGULAR DMS 表スペースでなければなりません。

注:どの表スペースに索引を含めるかは、表を作成するときにのみ指定できます。

insert-column
データの挿入先となる表または視点内の列名を指定します。

INSERT
既存の表データを変更することなく、インポートしたデータを表に追加します。

INSERT_UPDATE
インポートしたデータ行をターゲット表に追加するか、 または 1 次キーが一致するものがあればターゲット表の既存行を更新します。

INTO table-name
データのインポート先となるデータベース表を指定します。 この表として、システム表、宣言一時表、または要約表は指定できません。

下位のサーバーの場合を除き、INSERT、INSERT_UPDATE、および REPLACE オプションには、 完全修飾または非修飾の表名を使わなければならないようなときでも、 別名を指定することができます。 修飾子付き表名は、schema.tablename の形式です。 schema には、表作成時のユーザー名が入ります。

LOBS FROM lob-path
LOB ファイルを保管するパス (複数可) を指定します。 LOB データ・ファイルの名前は、 メイン・データ・ファイル (ASC、DEL、 または IXF) の、LOB 列にロードされる列内に保管されます。 lobsinfile 修飾子が指定されていない場合、このオプションは無視されます。

LONG IN tablespace-name
ロング列の値 (LONG VARCHAR、LONG VARGRAPHIC、LOB データ・タイプ、 またはソース・タイプとしてこれらが指定されている特殊タイプ) を保管する表スペースを指定します。 このオプションは、 IN 文節で指定した 1 次表スペースが DMS 表スペースである場合のみ使用できます。 指定した表スペースは存在している必要があり、LONG DMS 表スペースでなければなりません。

MESSAGES message-file
インポート操作中に生じ得る警告およびエラー・メッセージの宛先を指定します。 宛先ファイルがすでに存在している場合、インポート・ユーティリティーは情報を追加します。 このファイルへの完全パスが指定されていない場合、 このユーティリティーは現行のディレクトリーおよび省略時のドライブを宛先として使用します。 message-file を省略すると、メッセージは標準出力に書き込まれます。

METHOD

L
データのインポートを開始する列および終了する列の番号を指定します。 列の番号は、データの行の先頭からのバイト単位のオフセットです。 この番号は 1 から始まります。

注:このメソッドは、ASC ファイルの場合にのみ使用することができ、 そのファイル・タイプに対してのみ有効なオプションです。

N
インポートする列の名前を指定します。

注:この方式は、IXF ファイルの場合にのみ使用することができます。

P
インポートする入力データ・フィールドの索引 (1 から始まる) を指定します。

注:この方式は、IXF または DEL ファイルの場合にのみ使用でき、 DEL ファイル・タイプに対してのみ有効なオプションです。

MODIFIED BY filetype-mod
追加オプションを指定します (表 6 を参照)。

NULL INDICATORS null-indicator-list
このオプションは、METHOD L パラメーターを指定した場合だけ使用できます (つまり、入力ファイルが ASC ファイルの場合)。 ヌル標識リストは、コンマで区切られた正の整数のリストで、 各ヌル標識フィールドの列の番号を指定します。 列の番号は、データの行の先頭からのバイト単位の、各ヌル標識フィールドのオフセットです。 ヌル標識リストには、METHOD L パラメーターで定義された各データ・フィールドに対する 1 つの項目がなければなりません。 列の番号がゼロであることは、 対応するデータ・フィールドが必ずデータを含んでいることを示します。

ヌル標識列中の Y の値は、その列データがヌル値であることを指定します。 ヌル標識列に Y 以外 の文字を指定した場合は、 列データがヌル値ではなく、METHOD L オプションで指定された列データがインポートされることを指定することになります。

ヌル標識文字は MODIFIED BY オプションを使用して変更できます (表 6nullindchar 修飾子の説明を参照)。

OF filetype
入力ファイル内のデータの形式を指定します。

ファイル形式の詳細については、データ移動ユーティリティー 手引きおよび解説書 の付録『Export/Import/Load ユーティリティー・ファイル形式』を参照してください。

REPLACE
データ・オブジェクトを切り捨てることによって表内の既存のデータすべてを削除してから、 インポートしたデータを挿入します。 表定義および索引定義は変更されません。 表がない場合は、このオプションを使用できません。 DATALINK 列を含む表では無効です。 階層間でデータを移動する際にこのオプションを使用する場合は、 階層全体に関係したデータだけが置き換えられます。副表は置き換えられません。

REPLACE_CREATE
表がすでにある場合には、 データ・オブジェクトを切り捨てることによって表内の既存のデータすべてを削除し、 表定義や索引定義は変えることなく、インポートしたデータを挿入します。

表がまだない場合には、行の内容だけでなく表定義と索引定義も作成します。

このオプションは、IXF ファイルの場合にのみ使用することができます。 DATALINK 列を含む表では無効です。 階層間でデータを移動する際にこのオプションを使用する場合は、 階層全体に関係したデータだけが置き換えられます。副表は置き換えられません。

RESTARTCOUNT n
n + 1 の位置のレコードからインポート操作を開始するよう指定します。 最初の n 個のレコードはスキップされます。

STARTING sub-table-name
階層専用キーワード。 sub-table-name から始まる省略時順を要求します。 PC/IXF ファイルの場合、省略時順は入力ファイルに保管されている順です。 PC/IXF ファイル形式の場合、省略時順は有効な唯一の順序です。

sub-table-list
タイプ表で INSERT または INSERT_UPDATE オプションを指定した場合、 データのインポート先副表を指定するために副表名のリストが使われます。

traversal-order-list
タイプ表で INSERT、INSERT_UPDATE、または REPLACE オプションを指定した場合、 インポートする階層内の副表の走査順序を指定するために副表名のリストを使います。

UNDER sub-table-name
1 つまたは複数の副表を作成する場合に親表を指定します。

例 1

次に示すのは myfile.ixf から STAFF 表に情報をインポートする方法の一例です。

   db2 import from myfile.ixf of ixf messages msg.txt insert into staff
SQL3150N  The H record in the PC/IXF file has product "DB2    01.00", date
"19970220", and time "140848".
SQL3153N  The T record in the PC/IXF file has name "myfile", qualifier
"        ", and source "            ".
SQL3109N  The utility is beginning to load data from file "myfile".
SQL3110N  The utility has completed processing.  "58" rows were read from the
input file.
SQL3221W  ...Begin COMMIT WORK. Input Record Count = "58".
SQL3222W  ...COMMIT of any database changes was successful.
SQL3149N  "58" rows were processed from the input file.  "58" rows were
successfully inserted into the table.  "0" rows were rejected.

例 2

下記に示す例は、 DEL 形式のデータが含まれている入力ファイル delfile1 から、 表 MOVIETABLE をインポートする方法を示す例です。

   db2 import from delfile1 of del
       modified by dldel|
       insert into movietable (actorname, description, url_making_of, url_movie)
       datalink specification (dl_url_default_prefix "http://narang"),
       (dl_url_replace_prefix "http://bomdel" dl_url_suffix ".mpeg")

注:

  1. この表には下記の 4 つの列が含まれています。

       actorname              VARCHAR(n)
       description            VARCHAR(m)
       url_making_of          DATALINK (with LINKTYPE URL)
       url_movie              DATALINK (with LINKTYPE URL)
    

  2. 入力ファイルの中の DATALINK データのサブフィールド区切り文字は、 縦線 (|) 文字です。

  3. url_making_of の列値に接頭部文字列が含まれていないなら、 "http://narang" が使用されます。

  4. url_movie の非 NULL 列値には、 接頭部として "http://bomdel" が付けられます。 既存の値は置き換えられます。

  5. url_movie の非 NULL 列値のパスには、".mpeg" が付加されます。 たとえば、url_movie の列値が "http://server1/x/y/z" なら、 それは "http://bomdel/x/y/z.mpeg" として保管されます。 その値が "/x/y/z" なら "http://bomdel/x/y/z.mpeg" として保管されます。

例 3 (識別列がある表へのインポート)

TABLE1 には以下の 4 つの列があります。

TABLE2 は TABLE1 と同じですが、C2 が GENERATED ALWAYS 識別列である点が異なります。

DATAFILE1 のデータ・レコード (DEL 形式)

   "Liszt"
   "Hummel",,187.43, H
   "Grieg",100, 66.34, G
   "Satie",101, 818.23, I

DATAFILE2 のデータ・レコード (DEL 形式)

   "Liszt", 74.49, A
   "Hummel", 0.01, H
   "Grieg", 66.34, G
   "Satie", 818.23, I

以下のコマンドは、DATAFILE1 で行 1 および 2 への識別値の提供がないので、 それらの行のための識別値を生成します。 ただし、行 3 および 4 は、それぞれユーザー提供の識別値 100 と 101 が割り当てられます。

   db2 import from datafile1.del of del replace into table1

DATAFILE1 を TABLE1 にインポートしてすべての行に対する識別値を生成するには、 以下のコマンドのいずれかを発行します。

   db2 import from datafile1.del of del method P(1, 3, 4) replace into table1 (c1, c3, c4)
   db2 import from datafile1.del of del modified by identityignore replace into table1

DATAFILE2 を TABLE1 にインポートして各行に対する識別値を生成するには、 以下のコマンドのいずれかを発行します。

   db2 import from datafile2.del of del replace into table1 (c1, c3, c4)
   db2 import from datafile2.del of del modified by identitymissing replace into table1

DATAFILE1 を TABLE2 に、識別関連のファイル・タイプ修飾子を使用せずにインポートした場合、 行 1 と 2 は挿入されますが、行 3 と 4 は拒否されます。 その理由は、それらが固有の非ヌル値を提供し、識別列が GENERATED ALWAYS であるからです。

使用上の注意

インポート操作を開始する前に、すべての表操作が完了し、 すべてのロックが保留解除になっていることを確認してください。 これは、WITH HOLD でオープンされた、 すべてのカーソルをクローズした後で COMMIT または ROLLBACK を発行することによって行われます。

インポート・ユーティリティーは、 SQL INSERT ステートメントを使ってターゲット表に行を追加します。 ユーティリティーは入力ファイル中のデータの行ごとに 1 つの INSERT ステートメントを発行します。 INSERT ステートメントが失敗すると、次のどちらかのアクションが起きます。

ユーティリティーは、REPLACE または REPLACE_CREATE 操作中に、 古い行が削除された後、自動 COMMIT を実行します。 したがって、システムが失敗するか、 またはアプリケーションが表オブジェクトの切り捨て後にデータベース・マネージャーに割り込む場合、 古いデータはすべて失われます。 これらのオプションを使用する前に、古いデータがもう必要ないことを必ず確認してください。

ログが CREATE、REPLACE、または REPLACE_CREATE 操作中にいっぱいになった場合、 ユーティリティーは挿入されたレコード上で自動 COMMIT を実行します。 システムが失敗した場合、またはアプリケーションが自動 COMMIT の後にデータベース・マネージャーに割り込んだ場合、 部分データを持つ表がデータベースに残されます。 REPLACE または REPLACE_CREATE オプションを使用してインポート操作全体をやり直すか、 または正常にインポートされる行の数に設定した RESTARTCOUNT パラメーターを指定して INSERT を使用してください。

省略時では、自動 COMMIT は INSERT または INSERT_UPDATE オプションには実行されません。 しかし、COMMITCOUNT パラメーターがゼロでない場合は実行されます。 フル・ログの結果は ROLLBACK です。

インポート・ユーティリティーが COMMIT を実行するときはいつでも、 2 つのメッセージがメッセージ・ファイルに書き込まれます。 1 つはコミットされるレコードの数を示し、 もう 1 つは正常に終了した COMMIT の後に書き込まれます。 失敗の後にインポート操作を再始動する場合、 最後に正常に終了した COMMIT から決定されたとおり、 スキップするレコードの数を指定してください。

インポート・ユーティリティーは、小さい非互換性問題 (たとえば、 文字データは埋め込みまたは切り捨てを使ってインポートでき、 数値データは異なる数値データ型を使ってインポートできる) は受け入れますが、 大きな非互換性に関する問題は受け入れません。

それ自体以外への依存があるオブジェクト表や、 基本表に何らかの依存 (それ自体も含めて) があるオブジェクト視点を、 REPLACE または REPLACE_CREATE することはできません。 このような表または視点を置換するには、次のようにします。

  1. 表が親であるすべての外部キーを除去します。
  2. インポート・ユーティリティーを実行します。
  3. 表を変更して外部キーを再作成します。

外部キーの再作成中にエラーが発生する場合、 参照保全を保守するためにデータを変更してください。

参照制約および外部キー定義は、PC/IXF ファイルから表を作成する場合は保存されません。 (基本キー定義は、データが前に SELECT * を使ってエクスポートされた場合、 保存されます。)

リモート・データベースへのインポートには、入力データ・ファイルのコピー、 出力メッセージ・ファイル、およびデータベースがサイズが大きくなる可能性に備えて、 十分なディスク・スペースをサーバー上に確保することが必要です。

インポート操作がリモート・データベースに対して実行され、 出力メッセージ・ファイルが非常に長い (60KB より長い) 場合、 クライアント上でユーザーに戻されるメッセージ・ファイルがインポート操作中に欠落することがあります。 メッセージ情報の最初の 30KB と最後の 30KB は、常に保存されます。

リモート・データベースへの PC/IXF ファイルのインポートは、 PC/IXF ファイルがディスケットではなくハード・ディスク上にある場合、より早く行えます。

ASC、DEL、または WSF のファイル形式をインポートするためには、 それ以前にデータベース表または階層がすでに存在していなければなりません。 しかし、表がまだ存在していない場合でも、 IMPORT CREATE または IMPORT REPLACE_CREATE を使えば、 PC/IXF ファイルからデータをインポートする際に表が作成されます。 タイプ表の場合、IMPORT CREATE によってタイプ階層と表階層も作成されます。

データ (階層データを含む) を別のデータベースに移動するには、 PC/IXF インポートを使う必要があります。 行区切り文字を含む文字データを区切り文字付き ASCII (DEL) ファイルにエクスポートし、 テキスト転送プログラムにより処理を行うと (たとえば、OS/2 と AIX システム間で移動する)、 行区切り文字を含むフィールドは長さが伸縮します。 PC/IXF ファイル形式の指定では、OS/2 (IBM OS/2 拡張サービス、OS/2 拡張版、 および DB2 (OS/2 版)) のデータベースと、DB2 (AIX 版) のデータベースの間で、 エクスポート (OS/2 と AIX の間でファイルをバイナリー・コピー) とインポートによってデータを移行することが可能です。 ソースと宛先のデータベースが両方とも同じクライアントからアクセス可能である場合、 ファイルのコピーというステップは必要ありません。

ここでは、ASC ファイルおよび DEL ファイル内のデータは、 インポートを実行するクライアント・アプリケーションのコード・ページのデータであると想定します。 別々のコード・ページにデータをインポートする場合、 PC/IXF ファイル (異なるコード・ページへのインポートが考慮されたファイル) を使用することが推奨されています。 PC/IXF ファイルとインポート・ユーティリティーが同一のコード・ページの場合、 処理は通常のアプリケーションと同じようになります。 両者が異なるコード・ページであっても、 FORCEIN オプションが指定されている場合には、インポート・ユーティリティーにおいて、 PC/IXF ファイル内のデータが、 インポートを実行するアプリケーションと同一のコード・ページであるとみなされます。 両者のコード・ページに共通の変換表がある場合にも、同じ処置になります。 両者が異なるコード・ページであり、FORCEIN オプションも指定されていないが、 変換表はある、という場合には、 PC/IXF ファイル内のすべてのデータが、 ファイル・コード・ページからアプリケーション・コード・ページへと変換されます。 両者が異なるコード・ページにあり、FORCEIN オプションも指定されておらず、 さらに変換表もない場合には、インポート操作は失敗してしまいます。 これは、DB2 (AIX 版) クライアントの PC/IXF ファイルにのみ適用されます。

列が 1012 個の限界に近づいている 8KB ページ上の表オブジェクトの場合、 PC/IXF データ・ファイルをインポートすると、 SQL ステートメントの最大サイズを超えているため、 DB2 からエラーが戻されることがあります。 このようになるのは、CHAR、VARCHAR、または CLOB 型の列の場合だけです。 DEL または ASC ファイルのインポートでは、この制限は当てはまりません。 PC/IXF ファイルを使って新しい表を作成している場合、 別の方法として、db2look - DB2 統計および DDL 抽出ツール を使ってソース表の DDL をダンプしてから、 ステートメントを CLP から発行する、という方法があります。

DB2 コネクトを使うと、DB2 (OS/390 版)、DB2 (VM および VSE 版)、 および DB2 (OS/400 版) などの DRDA サーバーにデータをインポートできます。 PC/IXF インポート (INSERT オプション) だけがサポートされています。 RESTARTCOUNT パラメーターもサポートされていますが、 COMMITCOUNT パラメーターはサポートされていません。

タイプ表に対して CREATE オプションを使うと、 PC/IXF ファイルの中で定義されているすべての副表が作成されます。 副表定義は更新されません。 タイプ表に対して CREATE 以外のオプションを使うと、 走査順序リストによって、走査順序を指定できます。 その場合、走査順序リストはエクスポート操作で使用されたものと一致していなければなりません。 PC/IXF 形式の場合は、ターゲット副表名を指定して、 ファイルに保管されている走査順序を使うだけです。

インポート・ユーティリティーを使って、 前に PC/IXF ファイルにエクスポートされた表を回復できます。 表は、エクスポート時の状態に戻ります。

データは、システム表、宣言一時表、または要約表にはインポートできません。

インポート・ユーティリティーを介して視点を作成することはできません。

DB2 では、複数パーツの PC/IXF ファイルを、OS/2 システムから AIX システムに各パーツをコピーすることによってインポートする操作がサポートされています。

Windows NT オペレーティング・システムの場合、

DB2 データ・リンク・マネージャーに関する考慮事項

DB2 インポート・ユーティリティーを実行する場合、 その前に下記のことを実行しておいてください。

  1. 適切なデータ・リンク・サーバーに、参照されるファイルをコピーする。 dlfm_import ユーティリティーを使って、 dlfm_export ユーティリティーが生成するアーカイブから、 ファイルを抽出することができます。
  2. 必要な接頭部名を DB2 データ・リンク・マネージャーに登録する。 さらに、必要ならデータベースを登録するなど、 その他の管理作業も必要になることがあります。
  3. 必要なら、SQL 表のためにエクスポートしたデータの (DATALINK 列の) URL に含まれているデータ・リンク・サーバー情報を更新します。 (元の構成のデータ・リンク・サーバーがターゲットにおいても同じなら、 そのデータ・リンク・サーバー名は更新する必要はありません。)
  4. DB2 データ・リンク管理プログラム構成ファイルのターゲット構成で、 データ・リンク・サーバーを定義する。

インポート・ユーティリティーがターゲット・システム上で実行される場合、 DATALINK 列に関連したデータは SQL INSERT を使って、 基礎となる DB2 表にロードされます (他の列の場合と同じ)。

挿入操作の間、DATALINK 列の処理では、 ターゲット・データベースでの列指定に従って、 該当するデータ・リンク・サーバー中のファイルがリンクされます。

入力ファイル内での DATALINK 情報の表示

DATALINK 情報が入力ファイル内でどのように表示されるかについては、 ***を参照してください。

表 6. 有効なファイル・タイプ修飾子 (インポート)
修飾子 説明
すべてのファイル形式
compound=x x は 1〜100 の数字です。 データの挿入に非アトミック複合 SQL を使用し、 1 回につき x ステートメントずつ挿入が試みられます。

この修飾子が指定され、トランザクション・ログに十分な大きさがない場合、 インポート操作は失敗します。 トランザクション・ログは、COMMITCOUNT によって指定された行数か、 または COMMITCOUNT が指定されていない場合はデータ・ファイルの行数を入れる十分な大きさが必要です。 したがって、トランザクション・ログのオーバーフローを避けるために、 COMMITCOUNT オプションを指定することをお勧めします。

この修飾子は、INSERT_UPDATE モード、階層表、 および修飾子 usedefaultsidentitymissingidentityignoregeneratedmissinggeneratedignore とは互換性がありません。

generatedignore この修飾子は、インポート・ユーティリティーに、 すべての生成列のデータはデータ・ファイルに存在するが、 それらを無視すべきことを知らせます。 この結果として、生成列のすべての値は、このユーティリティーによって生成されます。 この修飾子は、generatedmissing 修飾子と共に使用することはできません。
generatedmissing この修飾子を指定すると、ユーティリティーは、入力データ・ファイルには生成列のデータが (NULL さえも) なく、 したがって各行の値が生成されると想定します。 この修飾子は、generatedignore 修飾子と共に使用することはできません。
identityignore この修飾子は、インポート・ユーティリティーに、 識別列のデータはデータ・ファイルに存在するが、 それらを無視すべきことを知らせます。 この結果として、すべて識別値はこのユーティリティーによって生成されます。 この動作は、GENERATED ALWAYS および GENERATED BY DEFAULT 識別列のどちらの場合も同じです。 つまり、GENERATED ALWAYS 列の場合、拒否される行はないという意味です。 この修飾子は、 identitymissing 修飾子と共に使用することはできません。
identitymissing この修飾子を指定すると、ユーティリティーは、入力データ・ファイルには識別列のデータが (NULL さえも) なく、 したがって各行の値が生成されると想定します。 この動作は、GENERATED ALWAYS および GENERATED BY DEFAULT 識別列のどちらの場合も同じです。 この修飾子は、 identityignore 修飾子と共に使用することはできません。
lobsinfile lob-path には、LOB 値を含むファイルへのパスを指定します。
no_type_id 単一副表へのインポートの場合のみ有効。 これを使う場合として典型的な例は、正規の表からデータをエクスポートした後、 この修飾子を使ってインポート操作を呼び出してそのデータを単一の副表に変換する場合です。
nodefaults ターゲット表の列に対応するソース列が明示的に指定されていない場合、 その表列がヌル値不可なら、省略時値はロードされません。 このオプションを指定せず、あるターゲット表列のためのソース列が明示的に指定されていない場合、 以下のいずれかになります。
  • 列に省略時値を指定できる場合、その省略時値がロードされます。
  • 列がヌル値可で、省略時値がその列に指定できない場合、ヌル値がロードされます。
  • 列がヌル値不可で、省略時値がその列に指定できない場合、 エラーが戻され、ユーティリティーは処理を停止します。
usedefaults ターゲット表の列に対応するソース列を指定していても、 1 つまたは複数の行インスタンスにデータが入っていない場合、 省略時値がロードされます。 欠落データの例は次のとおりです。
  • DEL ファイルの場合、列に ",," が指定された場合
  • ASC ファイルの場合、列のヌル標識が yes として設定された場合
  • DEL/ASC/WSF ファイルの場合、列が不足している行、 または元の指定では十分な長さのない行。
このオプションを指定せず、行インスタンスのソース列にデータがない場合、 以下のいずれかになります。
  • 列がヌル値可なら、ヌル値がロードされます。
  • 列がヌル値不可の場合、ユーティリティーは行を拒否します。
ASCII ファイル形式 (ASC/DEL)
dateformat="x" x は、ソース・ファイルの日付の形式です。a 有効な日付要素は次のとおりです。

  YYYY - 年 (0000〜9999 の範囲の 4 桁の数字)
  M    - 月 (1〜12 の範囲の 1 桁または 2 桁の数)
  MM   - 月 (1〜12 の範囲の 2 桁の数;
             M と同時には使用できない)
  D    - 日 (1〜31 の範囲の 1 桁または 2 桁の数)
  DD   - 日 (1〜31 の範囲の 2 桁の数;
             D と同時には使用できない)
  DDD    - Day of the year (three digits ranging
            from 001 - 366; mutually exclusive
            with other day or month elements)

省略時値の 1 が、指定されない各要素に割り当てられます。 日付形式のいくつかの例を以下に示します。

   "D-M-YYYY"
   "MM.DD.YYYY"
   "YYYYDDD"
implieddecimal 暗黙の 10 進小数点の位置は、列定義によって指定されます。 その位置が値の最後にあると想定されることはありません。 たとえば、値 12345 が DECIMAL(8,2) 列にロードされる場合、 123.45 としてであり、 12345.00 ではありません
noeofchar オプションのファイル終了文字 x'1A' は、 ファイル終了として識別されません。 それが普通の文字であるかのようにして処理は継続されます。
timeformat="x" x は、ソース・ファイルの時刻の形式です。a 有効な時刻要素は次のとおりです。

  H      - Hour (one or two digits ranging from 0 - 12
              for a 12 hour system, and 0 - 24
              for a 24 hour system)
  HH     - Hour (two digits ranging from 0 - 12
              for a 12 hour system, and 0 - 24
              for a 24 hour system; mutually exclusive
              with H)
  M     - 分 (0〜59 の範囲の 1 桁または 2 桁の数)
  MM    - 分 (0〜59 の範囲の 2 桁の数;
              M と同時には使用できない)
  S     - 秒 (0〜59 の範囲の 1 桁または 2 桁の数)
  SS    - 秒 (0〜59 の範囲の 2 桁の数;
              S と同時には使用できない)
  SSSSS  - Second of the day after midnight (5 digits
              ranging from 00000 - 86399; mutually
              exclusive with other time elements)
  TT    - 午前午後の標識 (AM または PM)

省略時値の 0 が、指定されない各要素に割り当てられます。 時刻形式のいくつかの例を以下に示します。

   "HH:MM:SS"
   "HH.MM TT"
   "SSSSS"
timestampformat="x" x は、ソース・ファイルのタイム・スタンプの形式です。a 有効なタイム・スタンプ要素は次のとおりです。

  YYYY - 年 (0000〜9999 の範囲の 4 桁の数字)
  M    - 月 (1〜12 の範囲の 1 桁または 2 桁の数)
  MM   - 月 (1〜12 の範囲の 2 桁の数;
             M (月) と同時には使用できない)
  D    - 日 (1〜31 の範囲の 1 桁または 2 桁の数)
  DD   - 日 (1〜31 の範囲の 2 桁の数;
             D と同時には使用できない)
  DDD    - Day of the year (three digits ranging
              from 001 - 366; mutually exclusive with
              other day or month elements)
  H      - Hour (one or two digits ranging from 0 - 12
              for a 12 hour system, and 0 - 24
              for a 24 hour system)
  HH     - Hour (two digits ranging from 0 - 12
              for a 12 hour system, and 0 - 24
              for a 24 hour system; mutually exclusive
              with H)
  M      - 分 (0〜59 の範囲の 1 桁または 2 桁の数)
  MM     - 分 (0〜59 の範囲の 2 桁の数;
             M (分) と同時には使用できない)
  S      - 秒 (0〜59 の範囲の 1 桁または 2 桁の数)
  SS     - 秒 (0〜59 の範囲の 2 桁の数;
             S と同時には使用できない)
  SSSSS  - Second of the day after midnight (5 digits
              ranging from 00000 - 86399; mutually
              exclusive with other time elements)
  UUUUUU - マイクロ秒 (000000 - 999999 の範囲の
           6 桁の数)
  TT     - 午前午後の標識 (AM または PM)

YYYY、M、MM、D、DD、または DDD が指定されていない場合、 省略時値として 1 が割り当てられます。 他の要素が指定されていない場合には、 省略時値として 0 が割り当てられます。 以下に、タイム・スタンプ形式の例を示します。

   "YYYY/MM/DD HH:MM:SS.UUUUUU"

次の例では、ユーザー定義の日時形式を含むデータを、schedule という表にインポートする方法を示します。

   db2 import from delfile2 of del
      modified by timestampformat="yyyy.mm.dd hh:mm tt"
      insert into schedule
ASC (区切りなし ASCII) ファイル形式
nochecklengths nochecklengths を指定した場合は、 ソース・データの中にターゲット表列のサイズを超える列定義が含まれている場合であっても、 各行のインポートが試みられます。 コード・ページ変換によってソース・データが縮小されれば、 そのような行であったとしても正常にインポートすることができます。 たとえば、ソースに 4 バイトの EUC データがある場合、 それがターゲットで 2 バイトの DBCS データに縮小されれば、必要なスペースは半分で済みます。 列定義が一致しなくてもソース・データがきちんと収まることが明らかな場合に、 このオプションは特に便利です。
nullindchar=x x は単一文字です。 ヌル値を示す文字を x に変更します。 x の省略時値は Y です。b

EBCDIC データ・ファイルの場合、この修飾子は大文字小文字を区別しますが、 英字の場合は区別しません。 たとえば、ヌル標識文字を文字 N に指定した場合、 n もヌル標識として認識されます。

reclen=x x は、32 767 以下の整数です。 1 行につき x 文字ずつ読まれます。 改行文字は行の終了にはなりません。
striptblanks 可変長フィールドにデータをインポートする場合に、後書きブランクをすべて切り捨てます。 このオプションを指定しない場合、ブランク・スペースはそのまま保持されます。

次の例の場合、インポート・ユーティリティーは、 striptblanks によって後書きブランク・スペースを切り捨てます。

   db2 import from myfile.asc of asc
      modified by striptblanks
      method l (1 10, 12 15) messages msgs.txt
      insert into staff

このオプションは、striptnulls と一緒には指定できません。 それらは相互に排他的なオプションです。

注:このオプションは、廃止された t オプション (後方互換性のためだけにサポートされる) に代わるものです。

striptnulls 可変長フィールドにデータをインポートする場合に、 後書きヌル値 (0x00 文字) をすべて切り捨てます。 このオプションを指定しない場合、ヌル値はそのまま保持されます。

このオプションは、striptblanks と一緒には指定できません。 それらは相互に排他的なオプションです。

注:このオプションは、廃止された padwithzero オプション (後方互換性のためだけにサポートされる) に代わるものです。

DEL (区切り付き ASCII) ファイル形式
chardelx x は単一文字ストリング区切り文字です。 省略時値は二重引用符 (") です。 指定した文字は、文字ストリングを囲むために、二重引用符の代わりに使用されます。 bc

単一引用符 (') も文字ストリング区切り文字として指定できます。 次の例では、chardel'' の指定によって、 すべての単一引用符 (') が文字ストリング区切り文字として解釈されます。

   db2 "import from myfile.del of del
      modified by chardel''
      method p (1, 4) insert into staff (id, years)"
coldelx x は単一文字列区切り文字です。 省略時値はコンマ (,) です。 指定した文字は、列の終わりを表すために、 コンマの代わりに使用されます。bc

次の例では、coldel; の指定によって、 すべてのセミコロン (;) が列区切りとして解釈されます。

   db2 import from myfile.del of del
      modified by coldel;
      messages msgs.txt insert into staff
datesiso 日付形式。 すべての日付データ値を ISO 形式でインポートします。
decplusblank 正符号文字。 これによって正の 10 進値の先頭に正符号 (+) ではなく、ブランク・スペースが置かれます。 省略時のアクションでは、正の 10 進数の前に正符号 (+) が付けられます。
decptx x は、小数点としてピリオドと置換される単一文字です。 省略時値はピリオド (.) です。 指定した文字は、小数点文字としてピリオドの代わりに使用されます。bc

次の例では、decpt; の指定によって、 すべてのセミコロン (;) が小数点として解釈されます。

   db2 "import from myfile.del of del
      modified by chardel'
      decpt; messages msgs.txt insert into staff"
delprioritychar 区切り文字の現在の省略時優先順位は、 (1) レコード区切り文字、(2) 文字区切り文字、(3) 列区切り文字です。 この修飾子を使用すると、区切り文字の優先順位が (1) 文字区切り文字、(2) レコード区切り文字、(3) 列区切り文字に戻り、 以前の優先順位に依存している既存のアプリケーションが保護されます。 構文は次のとおりです。

   db2 import ... modified by delprioritychar ...

たとえば、次のような DEL データ・ファイルがあるとします。

   "Smith, Joshua",4000,34.98<row delimiter>
   "Vincent,<row delimiter>, is a manager", ...
   ... 4005,44.37<row delimiter>

delprioritychar 修飾子を指定すれば、このデータ・ファイルは 2 行だけになります。 2 番目の <row delimiter> は 2 番目の行の最初のデータ列の一部として解釈されるのに対し、 1 番目と 3 番目の <row delimiter> は実際のレコード区切り文字として解釈されます。 この修飾子を指定しなかった場合は、 このデータ・ファイルは 3 行のままで、各行は <row delimiter> によって区切られます。

dldelx x は単一文字の DATALINK 区切り文字です。 省略時値はセミコロン (;) です。 指定した文字はセミコロンの代わりに、DATALINK 値のフィールド間区切り文字として使用されます。 DATALINK 値には副値が複数個含まれる場合があるため、これが必要になります。bc

注:行、列、 または文字ストリング区切り文字と同じ文字を x に指定することはできません。

keepblanks タイプが CHAR、VARCHAR、LONG VARCHAR、または CLOB である各フィールドの前後のブランクを保存します。 このオプションを指定しないと、文字区切り文字で囲まれていないすべての前後のブランクは除去され、 表のすべてのブランク・フィールドにヌルが挿入されます。
nodoubledel 二重文字区切り文字の認識を抑止します。 詳細については、区切り文字の制限を参照してください。
IXF ファイル形式
forcein コード・ページが一致していなくてもデータを受け入れ、 コード・ページの変換を抑制するようにユーティリティーに指示します。

固定長ターゲット・フィールドは、 データを入れるだけの十分な大きさがあるかどうかが検査されます。 nochecklengths を指定した場合、 そのような検査は実行されず、各行のインポートが試みられます。

indexixf 既存の表に現在定義されている索引をすべて除去し、 PC/IXF ファイルの索引定義に基づいて新しい索引を作成するようにユーティリティーに指示します。 このオプションを使用できるのは、表の内容を置換する場合だけです。 視点では使用できません。 また、insert-column を指定した場合には使用できません。
indexschema=schema 指定した schema を、索引作成時の索引名として使用します。 schema を指定しなかった場合 (しかしキーワード indexschema指定した 場合) には、 接続ユーザー ID が使用されます。 このキーワードを指定しない場合、IXF ファイルのスキーマが使用されます。
nochecklengths nochecklengths を指定した場合は、 ソース・データの中にターゲット表列のサイズを超える列定義が含まれている場合であっても、 各行のインポートが試みられます。 コード・ページ変換によってソース・データが縮小されれば、 そのような行であったとしても正常にインポートすることができます。 たとえば、ソースに 4 バイトの EUC データがある場合、 それがターゲットで 2 バイトの DBCS データに縮小されれば、必要なスペースは半分で済みます。 列定義が一致しなくてもソース・データがきちんと収まることが明らかな場合に、 このオプションは特に便利です。

注:

  1. MODIFIED BY オプションでサポートされていないファイル・タイプが指定されても、 インポート・ユーティリティーが警告を発することはありません。 サポートされていないファイル・タイプを使おうとすると、 インポート操作は失敗し、エラー・コードが戻されます。

  2. a 日付形式ストリングを囲む二重引用符は必須です。 フィールド区切り文字には、a〜z、A〜Z、および 0〜9 を含めることはできません。 フィールド区切り文字は、文字区切り文字、 または DEL ファイル形式のフィールド区切り文字と同じであってはなりません。 フィールド区切り文字は、要素の開始および終了位置が明確な場合は任意指定です。 (修飾子によって) D、H、M、または S などの要素が使用される場合、 項目が可変長であるためにあいまいさが存在することがあります。

    タイム・スタンプ形式の場合、月と分の記述子の両方に文字 M が使用されるので、 あいまいさを避けるように注意する必要があります。 月フィールドは、他の日付フィールドと隣接していなければなりません。 分フィールドは、他の時間フィールドと隣接していなければなりません。 以下に、いくつかのあいまいなタイム・スタンプ形式を示します。

       "M" (月または分のどちらにもとれる)
       "M:M" (月と分が区別がつかない)
       "M:YYYY:M" (両方とも月と解釈される)
       "S:M:YYYY" (時刻値と日付値の両方に隣接している)
    

    あいまいな場合、ユーティリティーはエラー・メッセージを報告し、操作は失敗します。

    以下に示すのは、明確なタイム・スタンプ形式です。

       "M:YYYY" (M (月))
       "S:M" (M (分))
       "M:YYYY:S:M" (M (月)....M (分))
       "M:H:YYYY:M:D" (M (分)....M (月))
    

    注:二重引用符や円記号などの文字は、 エスケープ文字が先行する必要があります (たとえば \)。

  3. b この文字は、 ソース・データのコード・ページで指定されている必要があります。

    (文字記号ではなく) 文字コード・ポイントは、 xJJ または 0xJJ という構文で指定することができます (JJ はコード・ポイントの 16 進表示)。 たとえば、列区切りとして # 文字を指定するには、 以下のうちの 1 つを使用します。

       ... modified by coldel# ...
       ... modified by coldel0x23 ...
       ... modified by coldelX23 ...
    

  4. c 区切り文字の制限に、 区切り文字の指定変更として使用できる文字に適用される制限のリストが示されています。

以下も参照

EXPORT

LOAD


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]