外部表を使用する LOAD CLPPlus コマンド

ターゲット Db2® サーバーへのファイルのロードのために、外部表を使用する LOAD CLPPlus コマンドがサポートされています。

呼び出し

LOAD コマンドは CLPPlus インターフェースから実行する必要があります。

許可

なし

必要な接続

データベースに接続している必要があります。

コマンド構文

構文図を読む構文図をスキップするLOADEXTERNALFROMfilenamepipename NOT LOGGED INITIALLY OPTIONS(options-string) INTOtable-name(insert-column-names)

コマンド・パラメーター

EXTERNAL
LOAD コマンドが外部表操作を使用することを指定します。
FROM filename または pipename
ロードされるデータを含むファイルまたはパイプを指定します。
NOT LOGGED INITIALLY
同じ作業単位内にある LOAD 操作によって表にロードされるデータは、ログに記録されません。
OPTIONS(options-string)
LOAD 操作の処理を制御する外部表オプションを指定します。詳しくは、ターゲット・サーバーの外部表オプションを参照してください。
INTO table-name
データのロード先となるデータベース表を指定します。
insert-column-names
データのロード先となるコンマ区切り表の列を指定します。

使用上の注意

LOG および BAD ファイルには、正常にロード、拒否、またはスキップされたレコードについての情報が含まれています。これらのファイルのロケーションは、以下のようにサーバーのロケーションによって異なります。

リモート・サーバー (REMOTESOURCE 'LOCAL' が指定されていない)
LOGDIR は、~.log ファイルおよび ~.bad ファイルが生成されるディレクトリーを指定します。log ファイルおよび bad ファイルが生成される場合、サーバーは、ドライバーに返される log および bad のファイル・パスに指定された LOGDIR を含めることによって、それらのファイルの保管場所の絶対パスを返します。

LOGDIR オプションが定義されていない場合には、JDBC ドライバーの出力ディレクトリーが、log ファイルと bad ファイルを保管するために使用されます。このデフォルトの出力ディレクトリーは、オペレーティング・システムのデフォルトの一時ディレクトリーまたは構成された db2.jcc.outputDirectory ディレクトリーです。

ローカル・サーバー (REMOTESOURCE 'LOCAL' が指定されている)
LOGDIR は、~.log ファイルおよび ~.bad ファイルが生成されるディレクトリーを指定します。SWIFT または S3 と一緒に使用される場合、これらのファイルはそのオブジェクト・ストアに置かれ、log ファイルと bad ファイルのパスは、そのバケットまたはコンテナーの先頭に対する相対パスになります。

ERROR_LOG は、LOGDIR オプションの同義語として使用できます。LOGDIR オプションが定義されていない場合、デフォルトのロケーションはデータ・ファイルのロケーションです。

外部表を使用する LOAD CLPPlus コマンドの出力

  • すべてのデータの行が正常にロードされると、LOAD コマンドの結果として、以下の出力のような情報が返されます。
       Total number of rows loaded: 10
       Db250000I: The command completed successfully.
  • すべてのデータの行が正常にロードされなかった場合は、LOAD コマンドの結果として、以下の出力のような情報が返されます。
       SQL5108W Loading of data to a Hadoop table or processing of data in an externaltable completed. 
       Number of rows processed: "2". Number of source records: "3".
       If the source was a file, number of skipped lines: "0". 
       Number of rejected source records: "1". Job or file identifier:
       "SAMPLE.REGRES1.SYSTET46273.019412".
    
       Db250000I: The command completed successfully.
  • サーバーまたは JCC ドライバーがエラー・メッセージを戻した場合、LOAD コマンドの結果として CLP に同じエラー・メッセージが表示されます。

例 1
この例では、データ・ファイルは、データベースに接続されたクライアント上にあります。このデータ・ファイルがリモートでロードされます。

ターゲット表は DB2TBL1 であり、列は ID [タイプ INTEGER] および NAME [タイプ varchar(50)] です。

データ・ファイルのパスおよび名前は、C:¥data¥et.txt であり、以下の内容があります。
1, 'Name0'
2, 'Name1'
3, 'Name2'
  1. CLPPlus を開始します。
  2. ターゲット・データベースに接続します。
  3. 次の LOAD コマンドを実行します。
    LOAD EXTERNAL FROM C:\data\et.txt 
       OPTIONS (DELIMITER ',' SOCKETBUFSIZE 30000 LOGDIR 'C:\data\' MAXERRORS 20 REMOTESOURCE 'JDBC') 
       INTO DB2TBL1;
    注: REMOTESOURCE 'JDBC' は、リモート・ロードの必須オプションです。
  4. データはターゲット表に正常にロードされ、以下の出力メッセージが出されます。
    Total number of rows loaded: 3
    
    Db250000I: The command completed successfully.
例 2
この例では、データ・ファイルはターゲット・サーバーに存在し、ローカルでロードされます。

ターゲット表は DB2TBL1 であり、列は ID [タイプ INTEGER] および NAME [タイプ VARCHAR(50)] です。

データ・ファイルのパスおよび名前は、/home/regres1/et/et1.txt であり、以下の内容があります。
1, 'Name0'
2, 'Name1'
"3", 'Name2'
  1. CLPPlus を開始します。
  2. ターゲット・データベースに接続します。
  3. 次の LOAD コマンドを実行します。
    LOAD EXTERNAL FROM /home/regres1/et/et1.txt 
       OPTIONS (DELIMITER ',' SOCKETBUFSIZE 30000 LOGDIR /home/regres1/et/' MAXERRORS 20) 
       INTO DB2TBL1;
    注: キーワード REMOTESOURCE は、ローカル・ロードには使用できません。
  4. 一部のデータがターゲット表に正常にロードされ、以下の出力メッセージが出されます。
    SQL5108W Loading of data to a Hadoop table or processing of data in an external table completed. 
    Number of rows processed: "2". Number of source records: "3".
    If the source was a file, number of skipped lines: "0". 
    Number of rejectedsource records: "1". 
    Job or file identifier:
    "SAMPLE.REGRES1.SYSTET46273.019412".
    
    Db250000I: The command completed successfully.
例 3
この例では、データ・ファイルは AWS S3 オブジェクト・ストアにあります。

ターゲット表は DB2TBL1 であり、列は ID [タイプ INTEGER] および NAME [タイプ VARCHAR(50)] です。

データ・ファイルのパスおよび名前は、C:¥data¥et.txt であり、以下の内容があります。
1, 'Name0'
2, 'Name1'
3, 'Name2'
  1. CLPPlus を開始します。
  2. ターゲット・データベースに接続します。
  3. 次の LOAD コマンドを実行します。
    LOAD EXTERNAL FROM /home/regres1/et/et1.txt 
       OPTIONS (S3 (ENDPOINT, AUTHKEY1, AUTHKEY2, BUCKET), 
          DELIMITER ',' SOCKETBUFSIZE 30000 LOGDIR  /home/regres1/et/' MAXERRORS 20) 
       INTO DB2TBL1;
    注: キーワード REMOTESOURCE は、AWS S3 オブジェクト・ストアとは使用できません。
  4. データはターゲット表に正常にロードされ、以下の出力メッセージが出されます。
    Total number of rows loaded: 3
    
    Db250000I: The command completed successfully.
例 4
この例では、データ・ファイルは IBM® Cloud Object Storage にあります。

ターゲット表は DB2TBL1 であり、列は ID [タイプ INTEGER] および NAME [タイプ VARCHAR(50)] です。

データ・ファイルのパスおよび名前は、C:¥data¥et.txt であり、以下の内容があります。
1, 'Name0'
2, 'Name1'
3, 'Name2'
  1. CLPPlus を開始します。
  2. ターゲット・データベースに接続します。
  3. 次の LOAD コマンドを実行します。
    LOAD EXTERNAL FROM /home/regres1/et/et1.txt 
       OPTIONS (SWIFT (ENDPOINT, AUTHKEY1, AUTHKEY2, CONTAINER), 
          DELIMITER ',' SOCKETBUFSIZE 30000 LOGDIR  /home/regres1/et/' MAXERRORS 20) 
       INTO DB2TBL1;
    注: キーワード REMOTESOURCE は、IBM Cloud Object Storage とは使用できません。
  4. データはターゲット表に正常にロードされ、以下の出力メッセージが出されます。
    Total number of rows loaded: 3
    
    Db250000I: The command completed successfully.
例 5
この例は、NOT LOGGED INITIALLY オプションの使用例を示しています。

ターゲット表は DB2TBL1 であり、列は ID [タイプ INTEGER] および NAME [タイプ VARCHAR(50)] です。

データ・ファイルのパスおよび名前は、C:¥data¥et.txt であり、以下の内容があります。
1, 'Name0'
2, 'Name1'
3, 'Name2'
  1. CLPPlus を開始します。
  2. ターゲット・データベースに接続します。
  3. 次の LOAD コマンドを実行します。
    LOAD EXTERNAL FROM 'C:\data\et1.txt' NOT LOGGED INITIALLY 
       OPTIONS (DELIMITER ',' LOGDIR 'C:\data\' MAXERRORS 20 SOCKETBUFSIZE 30000 REMOTESOURCE 'JDBC') 
       INTO DB2TBL1(ID, NAME);
  4. データはターゲット表に正常にロードされ、以下の出力メッセージが出されます。
    Total number of rows loaded: 3
    
    Db250000I: The command completed successfully.