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