UNLOAD 制御ステートメントのサンプル

以下の制御ステートメントのサンプルを、独自の UNLOAD 制御ステートメントを作成するためのモデルとして使用できます。

例 1: 指定した行のすべての列をアンロードする

以下のUNLOAD文は、以下の条件を満たす行のすべての列が、テーブルスペース DSN8D12A.DSN8S71E 内のテーブル DSN8810.EMP からアンロードされることを指定しています

  • WORKDEPT 列の値が D11。
  • SALARY 列の値が 2 万 5000 を超えています。
//STEP1    EXEC DSNUPROC,UID='SMPLUNLD',UTPROC='',SYSTEM='DSN'
//SYSREC   DD DSN=USERID.SMPLUNLD.SYSREC,
//         DISP=(NEW,CATLG,CATLG),
//         UNIT=SYSDA,SPACE=(TRK,(2,1)) 
//SYSPUNCH DD DSN=USERID.SMPLUNLD.SYSPUNCH,
//         DISP=(NEW,CATLG,CATLG), 
//         UNIT=SYSDA,SPACE=(TRK,(1,1))
//SYSPRINT DD SYSOUT=* 
//SYSIN    DD * 
  UNLOAD TABLESPACE DSN8D12A.DSN8S81E
    FROM TABLE DSN8C10.EMP 
    WHEN (WORKDEPT = 'D11' AND SALARY > 25000)

例 2: フィールド仕様を使用して特定の列を アンロードする

次の 制御ステートメントは、指定した条件を満たすすべての行について、列 EMPNO、LASTNAME、および SALARY をこの順序でアンロード する指定を行っています。 これらの条件は WHEN 文節で指定され、例 1の条件として同じです。 SALARY 列は、タイプ DECIMAL EXTERNAL としてアンロードされます。 NOPAD オプションは、何も埋め込みなしで、可変長フィールドがアンロードされることを示しています。

UNLOAD TABLESPACE DSN8D12A.DSN8S81E NOPAD
  FROM TABLE DSN8C10.EMP
    (EMPNO, LASTNAME, SALARY DECIMAL EXTERNAL)
  WHEN (WORKDEPT = 'D11' AND SALARY > 25000)

この例の出力は、次のような出力になります。

000060@@STERN#   32250.00
000150@@ADAMSON#   25280.00
000200@@BROWN#   27740.00
000220@@LUTZ#   29840.00
200220@@JOHN#   29840.00

この出力は、以下のとおりです。

  • 姓の前の「@@」は 2 バイトの 2 進数フィールドを表し、 VARCHAR フィールド LASTNAME の長さが入っています (例えば、STERN の場合は X'0005')。
  • 「#」は、NULL 可能な SALARY フィールドの NULL 標識バイトを表します。
  • SALARY 列は表で DECIMAL (9,2) として宣言されているため、SALARY フィールドのデフォルト の出力の長さは 11 (数字 9 桁 + 符号 + 小数点) であり、NULL 標識バイトは含まれていません。
  • LASTNAME は、NOPAD オプションが指定されているため、可変長フィールドとしてアンロードされます。

例 3: イメージ・コピーからデータをアンロードする

次の制御ステートメントの FROMCOPY オプションは、単一のイメージ・コピー・データ・セットである JUKWU111.FCOPY1.STEP1.FCOPY1 からデータをアンロードすることを指定しています。

PUNCHDDN SYSPUNCH は、UNLOAD ユーティリティーが LOAD ユーティリティー制御ステートメント を生成し、それを SYSPUNCH DD ステートメントで定義されたデータ・セット (SYSPUNCH がデフォルト) に 書き込むことを指定しています。 UNLDDN SYSREC は、SYSREC DD ステートメントで定義された データ・セット (SYSREC がデフォルト) にデータがアンロードされることを指定しています。

UNLOAD TABLESPACE DBKW1101.TPKW1101             
           FROMCOPY JUKWU111.FCOPY1.STEP1.FCOPY1    
           PUNCHDDN SYSPUNCH UNLDDN SYSREC 

例 4: サンプリングした行をアンロードし、ヘッダーを指定する

次の制御ステートメントは、表 ADMF001.TBKW1605 からサンプリングした行をアンロードする指定 を行っています。 サンプリングした行をアンロードすると、テスト・システムを構築する際に 便利です。 SAMPLE オプションは、行の 75% をサンプリングすることを示してい ます。 HEADER オプションは、'sample' というストリングを出力ファイルのヘッダー・フィールドとして 使用することを示しています。 PUNCHDDN オプションは、UNLOAD ユーティリティーが LOAD ユーティリティー制御ステートメント を生成し、それを SYSPUNCH DD ステートメントで定義されたデータ・セット (SYSPUNCH がデフォルト) に 書き込むことを指定しています。 UNLOAD は、ヘッダー・フィールドをこれらの LOAD ステートメントの WHEN 文節における基準として 指定しています。

UNLOAD TABLESPACE DBKW1603.TPKW1603 
            PUNCHDDN SYSPUNCH UNLDDN SYSREC          
            FROM TABLE ADMF001.TBKW1605              
              HEADER CONST 'sample'                  
              SAMPLE 75 

例5:分割された(UTSではない)テーブルスペース内の2つのテーブルからのデータのアンロード

次の制御文は、テーブル ADMF001.TBKW1504 とテーブル ADMF001.TBKW1505 からのデータを、分割された(UTSではない)テーブルスペース DBKW1502.TSKW1502 からアンロードすることを指定しています。 PUNCHDDN オプションは、UNLOAD ユーティリティーが LOAD ユーティリティー制御ステートメント を生成し、それを SYSPUNCH DD ステートメントで定義されたデータ・セット (SYSPUNCH がデフォルト) に 書き込むことを指定しています。 UNLDDN オプションは、SYSREC DD ステートメントで定義された データ・セット (これもデフォルト) に データがアンロードされることを指定しています。

UNLOAD TABLESPACE DBKW1502.TSKW1502             
           PUNCHDDN SYSPUNCH UNLDDN SYSREC          
            FROM TABLE ADMF001.TBKW1504              
            FROM TABLE ADMF001.TBKW1505              

例 6: パーティション化表スペースからデータを並列に アンロードする

以下の UNLOAD ステートメントは、テーブル TCRT.TTBL からのデータがUNLDDS テンプレートによって定義されたデータ・セットにアンロードされました。 これらのデータ・セットは、動的に割り振られ、TEMPLATE ユーティリティー制御ステートメント の DSN オプションにより定義された命名規則に従って、命名されます。 この命名規則は、各表スペース・パーティションごとに 1 つのデータ・セット が割り振られることを指定しています。

表スペース TDB1.TSP1 は表 TCRT.TTBL を含んでおり、3 つのパーティションを 持っているものと想定します。 表スペースはパーティション化されており、それぞれのパーティションは UNLDDS テンプレートにより 定義された出力データ・セットに関連しているため、UNLOAD ジョブはマルチプロセッサー環境では 並列に実行します。 並列タスク数は、使用可能な処理プログラム数によって決まります。

//STEP1    EXEC DSNUPROC,UID='SMPLUNLD',UTPROC='',SYSTEM='DSN'
//SYSPUNCH DD DSN=USERID.SMPLUNLD.SYSPUNCH,
//         DISP=(NEW,CATLG,CATLG),
//         UNIT=SYSDA,SPACE=(TRK,(1,1))
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  TEMPLATE UNLDDS   DSN &USERID..SMPLUNLD.&TS..P&PART.
           UNIT SYSDA  DISP (NEW,CATLG,CATLG) SPACE (2,1) CYL
  UNLOAD TABLESPACE TDB1.TSP1
    UNLDDN UNLDDS
    FROM TABLE TCRT.TTBL

ユーザー ID は USERID であるとします。 この UNLOAD ジョブは、アンロードされたデータを保管するために、次の 3 つのデータ・セットを 作成します。

  • USERID.SMPLUNLD.TSP1.P00001 ... パーティション1からの行が含まれています。
  • USERID.SMPLUNLD.TSP1.P00002 ... パーティション2の行が含まれています。
  • USERID.SMPLUNLD.TSP1.P00003 ... パーティション3からの行を含んでいます。

例 7: LISTDEF ユーティリティー・ステートメントを使用して、アンロードするパーティションを 指定する

次の UNLOAD ステートメントは、 UNLDLIST リストに含まれるデータがアンロードされることを指定します。 UNLDLIST は、LISTDEF ユーティリティー制御ステートメントで定義され、表スペース TDB1.TSP1 のパーティション 1 と 3 を含んでいます。 UNLOAD ステートメントの LIST オプションは、UNLOAD ユーティリティーがこのリストを 使用することを指定しています。

データは、UNLDDS テンプレートで定義されたデータ・セットにアンロードされます。

//SAMPJOB  JOB ...
//STEP1    EXEC DSNUPROC,UID='SMPLUNLD',UTPROC='',SYSTEM='DSN'
//SYSPUNCH DD DSN=USERID.SMPLUNLD.SYSPUNCH,
//         DISP=(NEW,CATLG,CATLG),
//         UNIT=SYSDA,SPACE=(TRK,(1,1))
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  LISTDEF  UNLDLIST
           INCLUDE  TABLESPACE TDB1.TSP1 PARTLEVEL(1)
           INCLUDE  TABLESPACE TDB1.TSP1 PARTLEVEL(3)
  TEMPLATE UNLDDS   DSN &USERID..SMPLUNLD.&TS..P&PART.
           UNIT SYSDA  DISP (NEW,CATLG,CATLG) SPACE (2,1) CYL
  UNLOAD LIST UNLDLIST              -- LIST name
    UNLDDN UNLDDS                   -- TEMPLATE name

ユーザー ID は USERID であるとします。 この UNLOAD ジョブは、アンロードされたデータを保管するために、次の 2 つのデータ・セットを 作成します。

  • USERID.SMPLUNLD.TSP1.P00001 ... パーティション1からの行が含まれています。
  • USERID.SMPLUNLD.TSP1.P00003 ... パーティション3からの行を含んでいます。

例 8: LISTDEF を使用して、複数の表スペースをアンロードする

次の UNLOAD ステートメントは、複数の表スペースからのデータがアンロードされることを指定しています。 これらの表スペースは、LISTDEF ユーティリティー制御ステートメントで定義されます。 データベース TDB1 が 2 つの表スペースを収容していて、それらの表スペースをパターン・マッチング・ストリング 'TSP*' で 表現できる (例えば、TSP1 と TSP2) と想定します。 これらの表スペースは、両方とも LISTDEF ステートメントで定義された UNLDLIST という名前の リストに含まれています。 UNLOAD ステートメントの LIST オプションは、UNLOAD ユーティリティーがこのリストを 使用することを指定しています。

UNLDDN オプションは、UNLDDS テンプレートで定義されたデータ・セットにデータをアンロードする指定を行っています。 PUNCHDDN オプション は、UNLOAD が LOAD ユーティリティー制御ステートメントを生成し、それを PUNCHDS テンプレートで定義されたデータ・セットに書き込むことを指定しています。

//SAMPJOB  JOB ...
//STEP1    EXEC DSNUPROC,UID='SMPLUNLD',UTPROC='',SYSTEM='DSN'
//SYSPRINT DD SYSOUT=*
//SYSIN    DD *
  LISTDEF  UNLDLIST
           INCLUDE  TABLESPACE TDB1.TSP*
  TEMPLATE UNLDDS   DSN &USERID..SMPLUNLD.&TS.
           UNIT SYSDA  DISP (NEW,CATLG,CATLG) SPACE (2,1) CYL
  TEMPLATE PUNCHDS  DSN &USERID..SMPLPUNC.&TS.
           UNIT SYSDA  DISP (NEW,CATLG,CATLG) SPACE (1,1) CYL
  UNLOAD LIST UNLDLIST
    PUNCHDDN PUNCHDS              -- TEMPLATE name
    UNLDDN   UNLDDS               -- TEMPLATE name

ユーザー ID は USERID であるとします。 この UNLOAD ジョブは、アンロードされたデータを保管するために、次の 2 つのデータ・セットを 作成します。

  • USERID.SMPLUNLD.TSP1 ... テーブル空間 TDB1.TSP1 の行を含んでいます。
  • USERID.SMPLUNLD.TSP2 ... テーブル空間 TDB1.TSP2 の行を含んでいます。

例 9: 区切り文字で区切られているファイルにデータをアンロードする

次の UNLOAD ステートメントは、表 TBQB0501 内の指定された列 (RECID、 CHAR7SBCS、 CHAR7BIT、 VCHAR20 、 VCHAR20SBCS 、 VCHAR20BIT ) からのデータを、区切り文字で区切られているファイルにアンロードすることを指定しています。 この出力フォーマットは、DELIMITED オプションで示されてい ます。 POSITION(*) オプションは、出力ファイルのそれぞれのフィールドは、直前のフィールドの最後の位置の 後の最初のバイトから始まることを示しています。

列区切り文字は COLDEL オプションによりセミコロン (;) と指定され、 文字ストリング区切り文字は CHARDEL オプションによりポンド記号 (#) と指定され、 小数点文字は DECPT オプションにより感嘆符 (!) と指定されてい ます。

PUNCHDDN SYSPUNCH は、UNLOAD が LOAD ユーティリティー制御ステートメントを 生成し、それをデフォルトである SYSPUNCH データ・セットに保管することを指定してい ます。 UNLDDN SYSREC は、データがデフォルトである SYSREC データ・セットにアンロードされることを 示しています。

EBCDIC オプションは、出力文字データはすべて EBCDIC であることを示しています。

//*                              
//STEP3    EXEC DSNUPROC,UID='JUQBU105.UNLD1',
//         UTPROC='',
//         SYSTEM='SSTR'
//UTPRINT  DD SYSOUT=*          
//SYSREC   DD DSN=JUQBU105.UNLD1.STEP3.TBQB0501,DISP=(MOD,DELETE,CATLG),
//         UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND) 
//SYSPUNCH DD DSN=JUQBU105.UNLD1.STEP3.SYSPUNCH
//         DISP=(MOD,CATLG,CATLG)
//         UNIT=SYSDA,SPACE=(4000,(20,20),,,ROUND)      
//SYSIN    DD*          
    UNLOAD TABLESPACE DBQB0501.TSQB0501       
         DELIMITED CHARDEL '#' COLDEL ';' DECPT '!'
         PUNCHDDN SYSPUNCH
         UNLDDN SYSREC EBCDIC                 
         FROM TABLE ADMF001.TBQB0501
          (RECID       POSITION(*) CHAR, 
            CHAR7SBCS   POSITION(*) CHAR,
           CHAR7SBIT   POSITION(*) CHAR(7),
           VCHAR20     POSITION(*) VARCHAR,
           VCHAR20SBCS POSITION(*) VARCHAR,     
           VCHAR20BIT  POSITION(*) VARCHAR) 
 /*

例 10: 文字データを変換する

この例の場合、表 DSN8810.DEMO_UNICODE にはユニコードで文字データが入っているものと想定してい ます。 UNLOAD 制御ステートメントは、このユーティリティーがこの表のデータを EBCDIC データとして アンロードするよう指定しています。

UNLOAD 
  EBCDIC
  TABLESPACE DSN8D81E.DSN8S81U
  FROM TABLE DSN8810.DEMO_UNICODE

例 11: LOB データをファイルにアンロードする

次の UNLOAD ステートメントは、ユーティリティーが表 DSN8910.EMP_PHOTO_RESUME からのデータを、 SYSREC DD ステートメントで識別されるデータ・セットにアンロードすることを指定しています。 EMPNO フィールド内のデータは 6 バイトの文字データ (CHAR(6) で示すとおり) で、SYSREC データ・セットに直接アンロードされます。 RESUME 列内のデータは CLOB データです。CLOBF オプションで指定したとおりです。 この CLOB データは LOBFRV テンプレートで指定されたファイルにアンロードされます。このテンプレートは、これより前に TEMPLATE ステートメントで定義されています。 これらのファイルがまだ存在していない場合、DB2 が作成します。 これらのファイルの名前は、SYSREC データ・セットに保管されます。 この SYSREC データ・セットへの保管対象のファイル名の長さは、最大 255 バイトまでで、VARCHAR オプションで指定されます。

TEMPLATE LOBFRV DSN 'UNLDTEST.&DB..&TS..RESUME'
                DSNTYPE(PDS) UNIT(SYSDA)

UNLOAD DATA
  FROM TABLE DSN8910.EMP_PHOTO_RESUME
  (EMPNO  CHAR(6),
   RESUME VARCHAR(255) CLOBF LOBFRV)
 SHRLEVEL CHANGE

例 12: クローン表からデータをアンロードする

この例の UNLOAD 制御ステートメント は、このユーティリティーが、指定された表スペース内のクローン表のみからデータを アンロードする指定を行っています。 PUNCHDDN オプション は、UNLOAD ユーティリティーが生成する LOAD ユーティリティー制御ステートメントを SYSPUNCH データ・セットが 受け取ることを指定します。

UNLOAD TABLESPACE DBKQRE01.TPKQRE01      
        FROM TABLE ADMF001.TBKQRE01_CLONE 
        PUNCHDDN SYSPUNCH UNLDDN SYSREC   
        CLONE