Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL...

44
Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 2007 3

Transcript of Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL...

Page 1: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

Oracle Warehouse Builder 10g Release 2

COBOL ベースのレガシー・データの統合

2007 年 3 月

Page 2: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

注:

本書は情報提供のみを目的としています。下記の事項は、マテリアルやコード、

機能の提供を確約するものではなく、また、購買を決定する際の判断材料とはな

りえません。本書に記載されている機能の開発、リリースおよび時期については、

弊社の裁量により決定いたします。

本書には、書式、ソフトウェアまたは印刷物のいかんによらず、オラクルが独占

的に所有する独自の情報が含まれています。本書とここに含まれる情報は、オラ

クルの事前の同意を得ることなく、オラクル以外の者に開示、複写、複製または

配布することが禁じられています。本書は、ライセンス契約の一部をなすもので

はなく、オラクル、その子会社または関連会社とのいかなる契約上の合意事項に

も組み込まれるものではありません。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

2

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 3: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

Oracle Warehouse Builder 10g Release 2

COBOL ベースのレガシー・データの統合

はじめに

業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

悪戦苦闘しています。こうしたデータの大部分は、COBOL プログラムで作成され

たファイルに格納されています。プログラムによっては数十年前に書かれたもの

もあり、開発者が会社を辞めてからかなりの時間が経過していることもあります。

残念ながら、これらのファイルに関する分かりやすいドキュメントはほとんど

残っていません。このようなプログラムによって作成されたデータファイルの

フォーマットを理解するには、それらを生成した COBOL プログラムを解明すること

が唯一の方法です。

その際、目前の作業を複雑にしているのは、COBOL によって生成されたファイル

が複雑な構造体を含んでおり、データ・ウェアハウスやデータ・マートのリレー

ショナル・データベースにマッピングできないという事実です。このため、レガ

シー・ファイル内に格納されているデータを理解するだけでなく、そのデータを

リレーショナル・モデルに移行する計画を立てる必要があります。

データを理解すれば、Oracle Warehouse Builder を使用して、別のデータと簡単に

統合できます。Oracle Warehouse Builder の機能をフル活用して、リレーショナル・

データを扱うときと同じ要領で、データのロード、管理、クレンジング、変換を

実行できます。

このホワイトペーパーでは、Oracle Warehouse Builder 10g Release 2 で提供されて

いるフラット・ファイルのサポート機能について概説します。また、COBOL のデー

タ構造体を確認し、その構造体をリレーショナル・モデルに移行する方法も示し

ます。その後、これらの構造体を Oracle Warehouse Builder にインポートする方法

についても実例を交えて説明します。固有の構造を持つ任意のバイナリ形式にも、

ここで説明するのと同じ原理が当てはまります。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

3

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 4: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

概要

Oracle Warehouse Builder 10g Release 2 では、COBOL プログラムによって作成され

たファイルを含め、多くのファイルについて、データ・アクセスおよびデータ抽

出機能を用意しています。これらのファイルには、データが EBCDIC 形式で記述

されるなじみのない環境で作成されたものも含まれます。こうしたデータには、

リレーショナル環境ではサポートされていない構造体が使用されていることがあ

ります。また、内部形式で出力されるため、リレーショナル・データベースでサ

ポートされているフォーマットに変換しなければならないデータもあります。

Oracle Warehouse Builder を使用すると、こうしたファイル内のデータを抽出でき

るだけでなく、基本的な抽出操作の範囲を超えた高度な操作も可能です。つまり、

そうしたデータが実際にリレーショナル表に格納されているかのように、SQL に

よる抽出や変換操作によってデータにアクセスできます。

メタデータの利点

Oracle Warehouse Builder には、ファイルの物理的な特性を簡単に定義できるウィ

ザードが用意されています。サンプル・ウィザードは、外部形式のデータファイ

ルを定義するためのアクティブなインタフェースを提供しています。ファイルを

定義すると、その定義内容に合わせてデータ表示が更新されます。ファイルの外

部表を定義することで、そのファイル内のデータに SQL を用いて透過的にアクセ

スすることもできます。ファイルおよび外部表に対し、Oracle Warehouse Builderは、あらゆる種類のメタデータ・サービスを提供します。これには、系統レポー

トや影響レポートも含まれます。

データのアクセスと変換

定義したファイルは、SQL*Loader を使用してウェアハウス内の 1 つまたは複数の

表に読み込むことができます。データは、ファイル内に定義された形式から表で

指定される形式に自動的に変換されます。また、データをデータベースに読み込

む前に、フィルタリングおよび変換を実行できます。

さらには、ファイル内のデータを外部表としてアクセスすることも可能です。外

部表機能を使用すると、ファイル内のデータに対して、データベースに格納され

たリレーショナル表と同じように SQL の select 文を実行できます。

クレンジング、変換、操作

ファイルのメタデータを定義すると、Oracle Warehouse Builder のすべての機能を

使用して、SQL ベースの抽出および変換メカニズムによってデータを統合できます。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

4

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 5: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

COBOL のデータ構造体の理解

COBOLのプログラマーは、物理ファイルとそれらの物理ファイルを構築するため

に使用する論理レコードを定義することによって、ファイルを作成します。レコー

ドはCOBOLプログラム内に定義できますが、通常はcopybookと呼ばれる別ファイ

ル内に定義されます。copybookには、ユーザー・データのレイアウトと形式を指

定しますが、ファイル自体の物理的な特性は指定しません。ファイルの物理的な

特性によって、ファイルの編成方法とアクセス方法が決まります。たとえば、レ

コードが(CRやCR/LFなどを使用して)終端処理されているかどうかはユーザー・

データ定義の一部ではなく、レコード定義には含まれていません。

データ階層

COBOLのレコードは、データ要素およびグループのセットとして定義されます。

データ要素はアトミックな(それ以上細分化できない)データ項目で、グループ

はデータ要素のコンテナです。COBOLのレコード内に定義された各項目は、グ

ループか基本項目である場合、フィールドと呼ばれます。各フィールドの定義に

は、レコード内でのデータの階層を示すレベル番号が付いています。グループは、

グループまたは基本項目からなります。グループに含まれる項目は、下位要素と

呼ばれます。基本項目のフィールド定義は、おもにPICTURE句とUSAGE句によっ

て指定された項目の完全なメタデータからなります。グループは、その下位要素

の特性を継承するため、通常、メタデータの詳細は指定されません。

例 1 01 EMPLOYEE-RECORD.

05 EMP-ID PIC 9(6). 05 EMP-REGION PIC 9. 05 EMP-DEPT PIC 999. 05 EMP-HIRE-DATE.

10 EMP-HIRE-DATE-MM PIC 99. 10 EMP-HIRE-DATE-DD PIC 99. 10 EMP-HIRE-DATE-YYYY PIC 9999.

05 EMP-SALARY PIC 9(9). 05 EMP-NAME PIC X(15).

上記の例は、EMPLOYEE-RECORD の定義です。このレコードは、05 レベルで定

義された 6つのフィールドからなります。EMP-HIRE-DATEを除くすべてのフィー

ルドは基本項目です。基本項目には、その項目のデータ特性を定義する PICTURE句が指定されています。EMP-HIRE-DATE は、10 レベルの下位要素を持つグルー

プ・フィールドです。10 レベルの各フィールドは基本項目であり、それぞれのデー

タ特性を定義する PICTURE 句が指定されています。EMP-HIRE-DATE グループ・

フィールドを使用して日付全体を参照できます。このフィールドは、年、月、日

を表す各要素からなります。各下位フィールドを参照することによって、年だけ

にアクセスすることもできます。

データ型

データ要素の形式と特性を定義するには、USAGE 句と PICTURE 句を使用します。

USAGE 句を指定しないと、データは DISPLAY 形式の外部数値または外部文字に

なります。USAGE 句と PICTURE 句の組合せによって、データ型が特定されます。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

5

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 6: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

COBOL のデータ型とそれらのリレーショナル・データ型へのマッピング方法の詳

細は、データ型のマッピングの項を参照してください。

配列と可変長配列

COBOL は、配列と可変長配列をサポートしています。これらの複雑な構造体を指

定するには、OCCURS 句を使用します。可変長配列を定義するには、DEPENDING ON 句を追加指定します。配列の場合は、OCCURS 句で配列の要素数を指定しま

す。可変長配列の場合、OCCURS 句の仕様には、要素 FROM n TO n と、配列の実

際の要素数が格納されたフィールドを指定するDEPENDING ON句が含まれます。

配列または可変長配列は、基本要素またはグループに定義できます。

例 2:基本フィールドに定義された配列 01 EMPLOYEE-RECORD.

05 EMP-ID PIC 9(6). 05 EMP-REGION PIC 9. 05 EMP-DEPT PIC 999. 05 EMP-HIRE-DATE.

10 EMP-HIRE-DATE-MM PIC 99. 10 EMP-HIRE-DATE-DD PIC 99. 10 EMP-HIRE-DATE-YYYY PIC 9999.

05 EMP-SALARY PIC 9(9). 05 EMP-NAME PIC X(15). 05 EMP-SKILL-LEVEL PIC 99 OCCURS 4 TIMES. 05 EMP-SKILL-ID PIC 9(4) OCCURS 4 TIMES.

この例では、2 つの独立した配列が EMP-SKILL_LEVEL と EMP-SKILL_ID に定義

されています。このレコードでは、EMP-SKILL-LEVEL が 4 回出現した後に、EMP- SKILL-ID が 4 回出現します。したがって、ファイルの各レコード内のフィールド

の並びは、EMP_SKILL_LEVEL、EMP_SKILL_LEVEL、EMP_SKILL_LEVEL、

EMP_SKILL_LEVEL、EMP_SKILL_ID、EMP_SKILL_ID、EMP_SKILL_ID、EMP_ SKILL_ID となります。

例 3:基本フィールドに定義された可変長配列 01 EMPLOYEE-RECORD.

05 EMP-ID PIC 9(6). 05 EMP-REGION PIC 9. 05 EMP-DEPT PIC 999. 05 EMP-HIRE-DATE.

10 EMP-HIRE-DATE-MM PIC 99. 10 EMP-HIRE-DATE-DD PIC 99. 10 EMP-HIRE-DATE-YYYY PIC 9999.

05 EMP-SALARY PIC 9(9). 05 EMP-NAME PIC X(15). 05 EMP-SKILL-COUNT PIC 99. 05 EMP-SKILL-LEVEL PIC 99 OCCURS 1 TO 4 TIMES

DEPENDING ON EMP-SKILL-COUNT.. 05 EMP-SKILL-ID PIC 9(4) OCCURS 1 to 4 TIMES

DEPENDING ON EMP-SKILL-COUNT.

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

6

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 7: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

この例では、2 つの独立した配列が EMP-SKILL_LEVEL と EMP-SKILL_ID に定義

されています。EMP-SKILL-COUNT の値によって、2 つの配列の要素数が決まり

ます。EMP_SKILL_COUNT の値が 1 の場合、レコード内のフィールドの並びは、

EMP_SKILL_LEVEL、EMP_SKILL_ID となります。EMP-SKILL-COUNT の値が 2の場合は、EMP-SKILL-LEVEL が 2 回出現した後に EMP-SKILL-ID が 2 回出現し

ます。この場合、ファイルの各レコード内のフィールドの並びは、EMP_SKILL_ LEVEL、EMP_SKILL_LEVEL、EMP_SKILL_ID、EMP_SKILL_ID となります。

例 4:グループ・フィールドに定義された配列 01 EMPLOYEE-RECORD.

05 EMP-ID PIC 9(6). 05 EMP-REGION PIC 9. 05 EMP-DEPT PIC 999. 05 EMP-HIRE-DATE.

10 EMP-HIRE-DATE-MM PIC 99. 10 EMP-HIRE-DATE-DD PIC 99. 10 EMP-HIRE-DATE-YYYY PIC 9999.

05 EMP-SALARY PIC 9(9). 05 EMP-NAME PIC X(15). 05 EMP-SKILLS OCCURS 4 TIMES. 10 EMP-SKILL-LEVEL PIC 99. 10 EMP-SKILL-ID PIC 9(4).

この例では、4 つの要素を持つ 1 つの配列を定義しています。各要素は、2 つの

フィールド EMP_SKILL_LEVEL と EMP_SKILL_ID からなります。ファイルの各

レコード内のフィールドの並びは、EMP_SKILL_LEVEL、EMP_SKILL_ID、EMP_ SKILL_LEVEL、EMP_SKILL_ID、EMP_SKILL_LEVEL、EMP_SKILL_ID、EMP_ SKILL_LEVEL、EMP_SKILL_ID となります。

例 5:グループに定義された可変長配列 01 EMPLOYEE-RECORD.

05 EMP-ID PIC 9(6). 05 EMP-REGION PIC 9. 05 EMP-DEPT PIC 999. 05 EMP-HIRE-DATE.

10 EMP-HIRE-DATE-MM PIC 99. 10 EMP-HIRE-DATE-DD PIC 99. 10 EMP-HIRE-DATE-YYYY PIC 9999.

05 EMP-SALARY PIC 9(9). 05 EMP-NAME PIC X(15). 05 EMP-SKILL-COUNT PIC 99. 05 EMP-SKILLS OCCURS 4 TIMES DEPENDING ON EMP-SKILL-COUNT.

10 EMP-SKILL-LEVEL PIC 99. 10 EMP-SKILL-ID PIC 9(4).

この例では、最大 4 つの要素を持つ 1 つの配列を定義しています。EMP-SKILL- COUNT の値によって、配列の要素数が決まります。したがって、EMP-SKILL- COUNT の値が 1 の場合は、EMP_SKILLS の出現回数は 1 回となります。EMP_ SKILL_COUNT の値が 1 の場合、レコード内のフィールドの並びは、EMP_SKILL_ LEVEL、EMP_SKILL_ID となります。EMP-SKILL-COUNT の値が 2 の場合、EMP_ SKILLS の出現回数は 2 回となります。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

7

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 8: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

その場合、ファイル内の各レコードのフィールドの並びは、EMP_SKILL_LEVEL、EMP_SKILL_ID、EMP_SKILL_LEVEL、EMP_SKILL_ID となります。

多重定義

COBOL では、レコード内のデータに複数の定義を与えることができます。データ

にアクセスする際には、どの定義でも使用できます。多重定義をする方法には、

マルチ・レコードを定義する方法、グループを定義する方法、再定義を使用する

方法の 3 つがあります。

マルチ・レコード

COBOL で生成されたファイルには、複数のレコード型を指定できます。ファイル

定義内に 01 レベルの項目が 2 つ以上存在する場合は、常にそれぞれの 01 レベル

が、そのデータ・レコード領域の異なる定義になります。データ・レコード領域

に読み込まれるレコードは 1 度に 1 つだけなので、01 レベルの定義も 1 回の読込

みにつき、いずれか 1 つだけが使用されます。たとえば、あるファイルに 2 つの

レコード型、部門レコードと社員レコードがあるとします。部門レコードと社員

レコードは、どちらも 01 レベルの項目として定義されています。各レコードの階

層は、そのレコードの 01 レベルの項目の直後から始まり、レコード全体を定義し

ます。各レコードには、レコード型を識別するフィールドが含まれます。このレ

コード型は、すべてのレコード定義で、同じ位置に存在します。次の例では、レ

コード型は先頭に存在します。

例 6:重複レコードを含むファイル 01 DEPARTMENT-RECORD.

05 DEPT-RECORD-TYPE PIC X. 05 DEPT-ID PIC 999. 05 DEPT-NAME PIC X(30). 05 DEPT-DESCRIPTION PIX X(160).

01 EMPLOYEE-RECORD. 05 EMP-RECORD-TYPE PIC X. 05 EMP-ID PIC 9(6). 05 EMP-REGION PIC 9. 05 EMP-DEPT PIC 999. 05 EMP-HIRE-DATE.

10 EMP-HIRE-DATE-MM PIC 99. 10 EMP-HIRE-DATE-DD PIC 99. 10 EMP-HIRE-DATE-YYYY PIC 9999.

05 EMP-SALARY PIC 9(9). 05 EMP-NAME PIC X(15).

グループ・フィールド

データ階層の項で説明したとおり、各フィールドはグループとして編成できます。

これらのグループは、フィールドを追加定義するもので、グループ・データのア

クセスに使用できます。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

8

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 9: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

再定義

COBOL では、フィールドまたはグループを再定義できます。再定義では、データ

を新しい場所に定義する代わりに、すでに定義済みのデータ文字に対する定義を

追加します。

例 7:フィールドの再定義 01 EMPLOYEE-RECORD.

05 EMP-ID PIC 9(6). 05 EMP-ID-R REDEFINES EMP-ID.

10 EMP-ID-GROUP PIC 99. 10 EMP-ID-NUM PIC 9999.

05 EMP-REGION PIC 9. 05 EMP-DEPT PIC 999. 05 EMP-HIRE-DATE.

10 EMP-HIRE-DATE-MM PIC 99. 10 EMP-HIRE-DATE-DD PIC 99. 10 EMP-HIRE-DATE-YYYY PIC 9999.

05 EMP-SALARY PIC 9(9). 05 EMP-NAME PIC X(15).

上記の例では、EMP-ID フィールドが 6 桁の数値フィールドとして定義されていま

す。再定義では、このフィールドを 2 つのフィールドに分割しています。すなわ

ち、EMP-ID-GROUP が EMP-ID の最初の 2 桁を、EMP-ID-NUM が EMP-ID フィー

ルドの最後の 4 桁を定義しています。EMP-ID-NUM と EMP-ID-GROUP のどちら

も、レコード内の先頭位置から始まる点に注意してください。

例 8:グループの再定義 01 EMPLOYEE-RECORD.

05 EMP-ID PIC 9(6). 05 EMP-ID-R REDEFINES EMP-ID.

10 EMP-ID-GROUP PIC 99. 10 EMP-ID-NUM PIC 9999.

05 EMP-REGION PIC 9. 05 EMP-DEPT PIC 999. 05 EMP-HIRE-DATE.

10 EMP-HIRE-DATE-MM PIC 99. 10 EMP-HIRE-DATE-DD PIC 99. 10 EMP-HIRE-DATE-YYYY PIC 9999.

05 EMP-SALARY PIC 9(9). 05 EMP-NAME PIC X(15). 05 EMP-SKILLS OCCURS 4 TIMES.

10 EMP-SKILL-LEVEL PIC 99. 10 EMP-SKILL-ID PIC 9(4).

05 EMP-SKILLS-R REDEFINES EMP-SKILLS. 10 EMP-SKILL-LEVEL1 PIC 99. 10 EMP-SKILL-ID1 PIC 9(4). 10 EMP-SKILL-LEVEL2 PIC 99. 10 EMP-SKILL-ID2 PIC 9(4). 10 EMP-SKILL-LEVEL3 PIC 99. 10 EMP-SKILL-ID3 PIC 9(4). 10 EMP-SKILL-LEVEL4 PIC 99. 10 EMP-SKILL-ID4 PIC 9(4).

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

9

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 10: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

上記の例では、各要素のフィールドが展開されるように、EMP-SKILL 配列を再定

義しています。前出の例と同様、EMP-SKILLS-R の定義は EMP-SKILLS と同じ領

域を再定義したものです。したがって、EMP-SKILL-LEVEL の最初の出現位置は、

EMP-SKILL-LEVEL1 のレコード内での位置と同じになります。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

10

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 11: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

COBOL のファイル形式

COBOL プログラムは、異なる編成のファイルを作成できます。具体的には、行順

ファイル、レコード順ファイル、相対ファイル、索引ファイルがあります。

行順ファイル

行順ファイルは、一般にテキスト・ファイルとして知られています。このファイ

ル型はおもにデータを表示するために使用されるためです。行順ファイル内のレ

コードは、書き込まれた順序でのみアクセス可能です。行順ファイルには、可変

長レコードが格納されます。ファイル内の各レコードの区切りはデリミタによっ

て識別されます。使用されるレコード・デリミタは、オペレーティング・システ

ムによって異なります。レコード・デリミタ文字は、各レコードの最後の文字の

後に挿入されます。

レコード順ファイル

レコード順ファイル内のレコードも書き込まれた順序でのみアクセス可能です。

レコード順は行順よりも柔軟性の高い編成方式です。レコードは固定長または可

変長で書込み可能です。レコード順編成は、バイナリ形式またはパック形式のデー

タ、または non-printable 文字を含むデータを格納するときに使用されます。固定

長ファイルでは、ファイルに書き込まれる各レコードの長さは一定です。レコー

ドには、必要に応じて空白が埋め込まれます。可変長レコードでは、各レコード

がレコードの実サイズに基づいて書き込まれます。各レコードの先頭には、レコー

ド記述語(RDW)が書き込まれ、この RDW にはレコードの実際の長さが格納さ

れます。RDW はレコードの一部とは見なされず、データ定義にも含まれません。

可変長レコードは、一般に多数の小さなレコードとごく少数の大きなレコードが

混在しているときに使用されます。可変長レコードをインポートする前に、変換

が必要になることがあります。

相対ファイル

相対ファイルは、書込み順だけでなく、ランダムにもアクセスできます。レコー

ドは可変長として宣言できますが、固定長として書き込まれます。ランダム・ア

クセスには、キーではなく相対レコード番号を使用します。相対ファイルをイン

ポートする際には、まず順ファイルへの変換が必要になることがあります。

索引ファイル

索引ファイルは、書込み順だけでなく、キー・フィールドを指定することによっ

てもアクセスできます。索引ファイル内のレコードは固定長または可変長です。

索引ファイルは、実際にはデータファイルと索引ファイルの 2 つの物理ファイル

で構成されています。索引ファイルは、インポートする前に順ファイルに変換す

る必要があります。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

11

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 12: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

COBOL 構造体のリレーショナル・データとしての再解釈

レコード

COBOL のファイルをリレーショナル・データベースにインポートする際は、デー

タをリレーショナル・データベースにマッピングする方法を計画する必要があり

ます。リレーショナル表へのマッピングをもっとも自然な形で考えることができ

るのは、各レコード型の最高レベルである 01 レベルの構造体です。多くの場合、

この構造体が最善の開始点ですが、設計によってはさらに分析することで、より

適切なマッピングが可能です。

ファイル内のレコードは、多くの場合情報ソースとは独立して設計されます。こ

れはレコードと表の大きな違いです。表は、一般的に密接に関連した情報を保持

するように設計されます。ファイル内のレコードの表へのマッピングを検討する

際は、複数の表を定義したほうがいいかどうかを検討する必要があります。多く

の場合、関連した情報をまとめるために使用するグループが、独立した表の第一

候補になります。たとえば、住所情報を定義するためのグループがあれば、住所

表に自然な形で適合します。配列も、可変長や固定長を問わず、多くの場合、独

立した表の第一候補になります。

配列

リレーショナル・データベースに合わせて配列を定義するには、配列内の各要素

を独立して指定することで配列を正規化します。この方法は、レコードの終わり

に位置する可変配列を定義するときにも使用できます。可変配列が埋め込まれて

いるレコードを可変長のまま物理的に格納する必要はないため、この方法を用い

てレコードをリレーショナル表にロードできます。可変配列をロードするときに

使用する正規化の具体的な方法については、事例 1 を参照してください。

データ型のマッピング

前述のとおり、データ要素の形式と特性を定義するには、USAGE 句と PICTURE句を使用します。USAGE 句と PICTURE 句の組合せによって、スカラー・データ

の型、サイズ、精度、スケールが決まります。次の表に、COBOL ファイルに適用

されるデータ要素定義を示します。この表は、各データ型の表現とそのデータ型

の SQL*Loader での表現方法を示しています。PICTURE は、データを記述するマ

スクを表します。括弧内に指定された値は、直前の PICTURE 要素の繰返し回数を

表します。したがって、n=5 のとき、X(n)はタイプ X(英数字データ)の 5 つの文

字を示します。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

12

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 13: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

COBOL から SQL*Loader 表へのマッピング

COBOL での 定義

使用 説明

X(n) DISPLAY 英数字データ。各 X は、指定されたキャラクタ・セッ

ト内で使用可能な 1 文字を表します。 SQL*Loaderの型 CHAR(n) データに有効な日付が含まれているときは DATE(n)でマスクされます。 TIMESTAMP INTERVAL

A(n) DISPLAY 英数字データ。各 A は、アルファベットまたは空白の

任意の文字を表します。 SQL*Loaderの型 CHAR(n)

9(n) DISPLAY 数値データ。各 9 は、1 桁の数字を表します。 SQL*Loaderの型 INTEGER EXTERNAL(n) DECIMAL EXTERNAL(n) ZONED EXTERNAL(n) データに有効な日付が含まれているときは DATE(n)でマスクされます。

+- mantissa +- exponent

DISPLAY 外部浮動小数点データ SQL*Loaderの型 FLOAT EXTERNAL (length)

S9(n)v9(m) SIGN TRAILING

DISPLAY 数値データ。各 9 は、1 桁の数字を表します。v は、

暗黙の小数点位置を表します。符号は、最終バイトに

保持されます。 SQL*Loaderの型 ZONED(precision, scale)、precision=n+m、scale=m

9(n)v9(m) DISPLAY 数値データ。各 9 は、1 桁の数字を表します。v は、

暗黙の小数点位置を表します。 SQL*Loaderの型 ZONED(precision, scale)、precision=n+m、scale=m

9(n)v9(m) S9(n)v9(m)

BINARY COMPUTATIONAL COMP COMPUTATIONAL-4 COMP-4

2 を基数とする内部形式のデータ。フィールドのサイ

ズは値 m で変わります。 n+m = 1-4, length = 2 n+m = 5-9, length = 4 n+m = 10-18, length =8 SQL*Loaderの型 SMALLINT INTEGER (length 2,4,or 8). SIGNED|UNSIGNED を使用する場合もあります。 BYTEORDER 句が必要な場合もあります。 スケールで式を処理します。

COMP-1 には

PICTURE 句は 使用できない

COMPUTATIONAL-1 COMP-1

単精度浮動小数点数、4 バイト長 SQL*Loaderの型 FLOAT BYTEORDER 句が必要な場合もあります。

COMP-2 には

PICTURE 句は 使用できない

COMPUTATIONAL-2 COMP-2

倍精度浮動小数点数、8 バイト長 SQL*Loaderの型 DOUBLE BYTEORDER 句が必要な場合もあります。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

13

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 14: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

9(n)v9(m) S9(n)v9(m)

COMPUTATIONAL-3 COMP-3 PACKED-DECIMAL

10 を基数とする内部形式の数値データ。この句は、

各桁が最小記憶領域を使用する必要があることを示

します。一般に、各バイトは 2 桁からなり、最後の半

バイトに符号が格納されます。 SQL*Loaderの型 DECIMAL(precision, scale)、precision=n+m、scale=m

X(n) 9(n)v9(m) S9(n)v9(m)

COMPUTATIONAL-5 COMP-5 COMPUTATIONAL-X COMP-X

(通常は使用されません。)データの内部形式は未定

義です。多くの場合、BINARY と同じように格納され

ますが、基数は反転することがあります。

G(n) DISPLAY-1 シフトインおよびシフトアウト文字を含まないグラ

フィック・データ SQL*Loaderの型 GRAPHIC(n)

05 V. 49 V-LN PIC S9(4) COMP. 05 V-DATA PIC X(n)

可変長文字フィールド SQL*Loaderの型 VARCHAR(max length)は、SMALLINT のサイズが同

じシステム間でのみ正しくロードできます。 05 V. 49 V-LN PIC S9(4) COMP. 05 V-DATA PIC G(n)

シフトインおよびシフトアウト文字を含まない可変長

グラフィック・データ SQL*Loaderの型 VARGRAPHIC(max length)は、SMALLINT のサイズが

同じシステム間でのみ正しくロードできます。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

14

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 15: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

COBOL データの統合

ここからは、COBOL のソース・ファイルの Oracle Warehouse Builder 内での使用

方法について説明します。4 つの事例を紹介します。最初に、可変配列を含むファ

イルを表にロードする方法を示します。2 番目に、外部表を使用して、次元デー

タを Oracle OLAP アナリティック・ワークスペース内に直接ロードする方法を示

します。3 番目に、マルチ・レコード型を含むファイルを表にロードする方法を

示します。4 番目に、EBCDIC 形式および内部形式のデータを含むファイルから

データをロードする方法を示します。

COBOL のソース・ファイルをロードするプロセスは、大きく次の 4 つの手順から

なります。

I. copybookの解析

II. メタデータの定義と構成

III. ターゲットへのマッピングの作成と構成

IV. 配置と実行

事例 1:可変配列を含むファイルから表へのロード

この事例では、COBOL の可変配列構造体を Oracle Warehouse Builder で定義する

方法を示します。ここでは、SQL*Loader を使用してファイルを表にロードします。

I. copybook の解析

以下の表に、EBCDIC ファイル用の COBOL の copybook 定義を示します。copybookには、年、月、日の各下位フィールドを含むグループ・フィールド EMP-HIRE-DATEがあります。ここでは、(下位フィールドは使用せず)このグループ・フィール

ドのみを使用して、それを DATE フィールドにマッピングしている点に注目して

ください。年、月、日を表す下位フィールドは無視しています。また、'occurs depending on'データ構造体もあります。この表は、可変配列を SQL*Loader にマッ

ピングする方法を示しています。具体的には、OCCURS 句の各要素を 1 つのフィー

ルドにマッピングしています。この配列の最大要素数は 4 であることが分かって

いるため、4 つの要素ごとに SKILL-LEVEL と SKILL-ID の各フィールドを作成し

ます。このファイルをロードする際は、SQL*Loader の'trailing nullcols'と外部表の

'value null when blank'を使用します。

社員レコードの COBOL Copybook 01 EMPLOYEE-RECORD.

05 EMP-RECORD-LENGTH PIC 9(4). 05 EMP-ID PIC 9(6). 05 EMP-REGION PIC 9. 05 EMP-DEPT PIC 999. 05 EMP-HIRE-DATE.

10 EMP-HIRE-MM PIC 99. 10 EMP-HIRE-DD PIC 99. 10 EMP-HIRE-YYY PIC 9999.

05 EMP-SALARY PIC 9(9). 05 EMP-NAME PIC X(15). 05 EMP-SKILL-COUNT PIC 99.

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

15

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 16: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

05 EMP-SKILL OCCURS 4 DEPENDING ON EMP-SKILL-COUNT. 10 EMP-SKILL-LEVEL PIC 99. 10 EMP-SKILL-ID PIC 9999.

COBOL から SQL*Loader 表へのマッピング

COBOL Copybook SQL*Loader の フィールド名

開始位置: 終了位置

SQL*Loader の型

01 EMPLOYEE-RECORD. 05 EMP-RECORD-LENGTH PIC 9(4). 05 EMP-ID PIC 9(6). EMP_ID 5:10 INTEGER

EXTERNAL(6) 05 EMP-REGION PIC 9. EMP_REGION 11:11 INTEGER

EXTERNAL(1) 05 EMP-DEPT PIC 999. EMP_DEPT 12:14 INTEGER

EXTERNAL(3) 05 EMP-HIRE-DATE. EMP_HIRE_DATE 15:22 DATE(8)

MMDDYYYY DEFAULTIF EMP_HIRE_DATE= BLANKS

10 EMP-HIRE-MM PIC 99. 10 EMP-HIRE-DD PIC 99. 10 EMP-HIRE-YYYY PIC 9999. 05 EMP-SALARY PIC 9(9). EMP_SALARY 23:31 INTEGER

EXTERNAL(9) 05 EMP-NAME PIC X(15). EMP_NAME 32:46 CHAR(15) NULLIF

EMP_NAME= BLANKS

05 EMP-SKILL-COUNT PIC 99. EMP_SKILL_COUNT

47:48 INTEGER EXTERNAL(2)

05 EMP-SKILLS OCCURS 4 TIMES DEPENDING ON EMP-SKILL-COUNT.

10 EMP-SKILL-LEVEL PIC 99. SKILL_LEVEL1 49:50 INTEGER EXTERNAL(2)

10 EMP-SKILL-ID PIC 9999. SKILL_ID1 51:54 INTEGER EXTERNAL(4)

SKILL_LEVEL2 49:50 INTEGER EXTERNAL(2)

SKILL_ID2 57:60 INTEGER EXTERNAL(4)

SKILL_LEVEL3 61:62 INTEGER EXTERNAL(2)

SKILL_ID3 63:66 INTEGER EXTERNAL(4)

SKILL_LEVEL4 67:68 INTEGER EXTERNAL(2)

SKILL_ID4 69:70 INTEGER EXTERNAL(4)

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

16

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 17: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

II.メタデータの定義と構成

1. フラット・ファイルの作成ウィザードを使用したフラット・ファイル

の定義

ステップ 1:ファイルとキャラクタ・セットの定義

多くの場合、ファイル定義をサンプリングし、それらのファイルを使用して Oracle Warehouse Builder 内でメタデータ定義を作成します。ここでは、サンプリングを

おこなわずにファイル定義を直接作成します。

ファイル定義の名前を入力し、キャラクタ・セットの識別名として WE8EBCDIC500を選択します。これにより、SQL*Loader が、ファイル内のデータを EBCDIC デー

タとして認識できるようになります。デフォルトの物理ファイル名も、ここで指

定できます。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

17

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 18: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

ステップ 2:ファイル特性の定義

物理ファイルの特性は、COBOLプログラム内のファイル仕様(前述のCOBOLファ

イル形式を参照)、ファイルが作成された環境、使用した ftp オプション(ファイ

ルを転送した場合)によって決まります。copybook 内には指定されません。

レコード・デリミタ

レコード・デリミタは、ファイル内の物理レコードの終わりを示します。このファ

イルのレコード・デリミタは、バイナリ値 0D0A です。x'0D0A'と指定します。ド

ロップダウン・リストに表示されないテキスト、文字、16 進数を指定するときは、

Delimiter ボックスに直接入力します。

フィールド形式

レコード内のフィールドは、デリミタで区切ったり、引用符で囲んだりしません。

各フィールドはレコード内の定位置に存在します。したがって、ファイルは固定

長フィールドを含むものとして定義されます。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

18

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 19: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

ステップ 3:単一のレコード型を含むファイルの指定

ステップ 4:COBOL を使用したレコード内のフィールドを SQL*Loader 表に定義

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

19

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 20: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

II.ターゲットへのマッピングの作成と構成

1. ターゲット表への SQL*Loader マッピングの作成

以下のマップでは、ファイルと同じ構造を持つターゲット表へ、ソースを直接ロー

ドするファイル演算子を使用します。プロパティは変更する必要はなく、参照用

としてのみ表示されます。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

20

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 21: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

2. ファイル・モジュールの場所の構成

ファイル・モジュールが目的のデータ・ロケーションに正しく構成されているこ

とを確認します。SQL*Loader マップ/外部表を使用した場合、このデータ・ロケー

ションにフラット・ファイルが置かれます。このステップは、データ・ロケーショ

ンの設定とファイル・モジュールの構成という 2 つの手順からなります。データ・

ロケーションを設定するには、ファイル・モジュール自体を編集します。ファイ

ル・モジュールを構成するには、そのファイル・モジュールを右クリックして

「configure」を選択します。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

21

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 22: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

3. マッピングの構成

SQL*Loader のチューニング・プロパティ

並列度やスレッド数といった SQL*Loader のパラメータを設定します。これらの

プロパティは、マッピングを右クリックすると表示されます。マッピングを右ク

リックすると、下のような構成ウィンドウが表示されます。この構成ウィンドウ

で次のステップの作業を実行します。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

22

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 23: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

Sql*Loader のデータファイルの追加

データファ

イルを作成

するには、

「Sql Loader Data Files」をクリック

し、データ

ファイルを

追加します。

そして、デー

タファイル

名と、必要に

応じて破棄

ファイル名

および不良

ファイル名

を指定しま

す。 これにより、

マッピング

のデバッグ

が簡素化さ

れます。

TRAILING NULLSCOLS プロパティの設定

SQL*LoaderのTRAILING NULLSCOLSプロパティ

は、ロード中

のターゲット

表で確認でき

ます。 ツリー内の表

を選択し、プ

ロパティ・イ

ンスペクタで

「Trailing Nullscols」プロパティを選

択して可変配

列を許可しま

す。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

23

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 24: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

IV.配置と実行

表とマッピングを配置し、ターゲット・データベース内にそれらを作成します。

マッピングを実行すると、TGT_FROM_FILE 表に、変換されたデータがロードさ

れます。ファイル構造体では ITEM_COUNT の値に応じて OCCURS 4 TIMES 句を

使用するため、SKILL_LEVELx 列と SKILL_IDx 列には一部のみ値が入ります。

TGT_FROM_FILE 表のデータ

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

24

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 25: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

事例 2:外部表を使用した次元データのロード

この事例では、外部表を作成し、それを用いて Oracle OLAP アナリティック・ワー

クスペースに次元データをロードする方法を示します。外部表は、ファイル定義

から簡単に作成できます。ファイルの外部表を定義することによって、リレーショ

ナル表を扱うときと同じようにレコードを選択できるため、ロード時の柔軟性が

向上します。

Oracle Warehouse Builder に追加された機能を明らかにするため、部署名と地域名

に、それぞれ EDEPT と EREGION という名前の検索テーブルも使用しています。

この事例により、EBCDIC 形式のレガシー・データファイルから Oracle OLAP に

直接データをロードする方法がわかります。これは、Oracle Warehouse Builder 固有の機能です。

A. Copybook の解析

この事例では、事例 3 で作成した copybook とファイル定義を使用します。

B. メタデータの定義

1. 事例 3 で指定したとおりにフラット・ファイルを定義します。

2. 外部表の作成ウィザードを使用して外部表を定義します。

外部表を作成し、外部表の作成ウィザードで定義したファイルを選択します。列

はファイル定義から自動的に導出されます。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

25

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 26: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

3. 外部表を構成します。

Load Nulls When Missing Property プロパティの設定

「Load Nulls when MissingValues」プロパティを選択

します。可変配列を許可す

るために、このプロパティを

かならず選択してください。

データファイルの作成とデータファイル名の指定

ツリー内の 「Data Files」 ノードを右ク

リ ッ ク し て

ファイルを追

加し、(デフォ

ルトと異なる

場合)データ

ファイルの名

前と場所を入

力します。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

26

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 27: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

4. EDEPT 表と EREGION 表を定義し、ロードします。

簡単な検索表 EDEPT と EREGION を使用して、ソース・データファイルの部門列

と地域列に関する情報を提供します。EDEPT 表と EREGION 表を配置した後、ター

ゲット・スキーマに対して以下の SQL を実行します。 insert into eregion values (1,'USWEST'); insert into eregion values (2,'EMEA'); insert into eregion values (4,'APAC'); insert into eregion values (3,'USEAST'); insert into edept values (153,'Customer Support'); insert into edept values (650,'Platform Engineering'); insert into edept values (138,'R and D'); insert into edept values (144,'Finance'); insert into edept values (117,'Operations'); insert into edept values (161,'Tools Development'); insert into edept values (288,'Applications Development'); insert into edept values (265,'Documentation'); insert into edept values (165,'Curriculum Devt'); insert into edept values (127,'Sales'); commit;

III.ターゲットへのマッピングの作成と構成

ここでは、外部表を使用してマッピングを作成します。部門表と地域表に対して

検索を実行して名前を取得し、AW 次元をロードするための次元演算子にデータ

をロードします(AW 次元には 2 つの階層、"地域 ← 社員"と"部門 ← 社員"があ

ります)。

IV.配置と実行

EXT_FOR_EBCDIC 表のデータ

外部表を計画することで得られるソース・データは次のようになります。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

27

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 28: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

ファイル構造体では ITEM_COUNT の値に応じて OCCURS 4 TIMES 句を使用する

ため、SKILL_LEVELx 列と SKILL_IDx 列には一部のみデータが入ります。

AW(アナリティック・ワークスペース)にロードされた EMPLOYEE 次元データ

次元マップを実行すると、OLAP アナリティック・ワークスペースに次元データ

がロードされます。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

28

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 29: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

事例 3:マルチ・レコード型を含むファイルから表へのロード

この事例では、マルチ・レコード・ファイルを Oracle Warehouse Builder で定義す

る方法を示します。Oracle Warehouse Builder は、SQL*Loader を使用して、ファイ

ルを 3 つの異なる表に一度にロードします。

I. copybook の解析

copybookの内容を確認し、COBOLから SQL*Loaderへのマッピングを特定します。

この例の copybookには、2つのレコード Employeeと Payroll が定義されています。

各レコード内の REC_TYPE フィールドが先頭位置です。"E"で始まるレコードは

社員レコード、"P"で始まるレコードは給与レコードです。レコード型が格納され

るフィールドの定義は、それが両方のレコードで同じ位置に存在するという点を

除き、何も特別な点はありません。

社員レコードと給与レコードの COBOL Copybook

01 EMPLOYEE-RECORD. 05 EMP-RECORD-TYPE PIC X. 05 EMP-ID PIC 9(6). 05 EMP-REGION PIC 9. 05 EMP-DEPT PIC 999. 06 EMP-HIRE-DATE.

10 EMP-HIRE-MM PIC 99. 10 EMP-HIRE-DD PIC 99. 10 EMP-HIRE-YY PIC 9999.

05 EMP-SALARY PIC 9(9). 05 EMP-NAME PIC X(15).

01 PAYROLL-RECORD.

05 PAY-REC-TYPE PIC X. 05 PAY-ID PIC 9(6). 05 PAY-PAY-END-DATE PIC 9(8). 05 PAY-CHECK-DATE PIC 9(8). 05 PAY-CHECK-NUM PIC 9(5). 05 PAY-GROSS PIC 9(9). 05 PAY-YTD-GROSS PIC 9(9). 05 PAY-DEDUCTIONS PIC 9(5) OCCURS 7.

次の表に、定義される SQL*Loader フィールドを示します。

COBOL から SQL*Loader 表へのマッピング

COBOL Copybook SQL*Loader の

フィールド名 長さ SQL*Loader の型

01 EMPLOYEE-RECORD. 05 EMP-REC-TYPE PIC X. TYPE 1 CHAR(1) 05 EMP-ID PIC 9(6). ID 6 INTEGER EXTERNAL(6) 05 EMP-REGION PIC 9. REGION 1 INTEGER EXTERNAL(1) 05 EMP-DEPT PIC 999. DEPT 3 INTEGER EXTERNAL(3) 05 EMP-HIRE-DATE. HIRE_DATE 8 DATE(8) MMDDYYYY

DEFAULTIF EMP_HIRE_DATE= BLANKS

10 EMP-HIRE-MM PIC 99. 10 EMP-HIRE-DD PIC 99.

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

29

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 30: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

10 EMP-HIRE-YYYY PIC 9999. 05 EMP-SALARY PIC 9(9). SALARY 9 INTEGER EXTERNAL(9) 05 EMP-NAME PIC X(15). NAME 15 CHAR(15) NULLIF

EMP_NAME= BLANKS 01 PAY-RECORD. 05 PAY-REC-TYPE PIC X. TYPE 1 CHAR(1) 05 PAY-ID PIC 9(6). ID 6 INTEGER EXTERNAL(6) 05 PAY-END-DATE PIC 9(8). END_DATE 8 DATE 05 PAY-CHECK-DATE PIC 9(8). CHECK_DATE 8 DATE 05 PAY-CHECK-NUM PIC 9(5). CHECK_NUM 5 INTEGER EXTERNAL(5) 05 PAY-GROSS PIC 9(9). GROSS_AMT 9 INTEGER EXTERNAL(9) 05 PAY-YTD-GROSS PIC 9(9). YTD_AMT 9 INTEGER EXTERNAL(9) 05 DEDUCTIONS PIC 9(5) OCCURS 7.

DED1 5 INTEGER EXTERNAL(5)

DED2 5 INTEGER EXTERNAL(5) DED3 5 INTEGER EXTERNAL(5) DED4 5 INTEGER EXTERNAL(5) DED5 5 INTEGER EXTERNAL(5) DED6 5 INTEGER EXTERNAL(5) DED7 5 INTEGER EXTERNAL(5)

II.メタデータの定義と構成

1. フラット・ファイル・サンプル・ウィザードを使用したフラット・ファ

イルの定義

ステップ 1:ファイルとキャラクタ・セットの定義

サンプル・ウィザードはファイルを CSV ファイルとして認識し、ファイル定義を

単純化するために各フィールドを列形式で表示します。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

30

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 31: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

ステップ 2 とステップ 3:レコード編成とファイル形式の特定

ファイル内のレコードは CR で終端処理されるため、デフォルトのレコード編成

を使用できます。フィールドはカンマで区切られるため、デフォルトのファイル

形式を使用できます。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

31

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 32: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

ステップ 4 とステップ 5:ファイル・レイアウトとレコード型の特定

ファイルは、マルチ・レコード・ファイルとして識別されます。先頭位置をスキャ

ンしてレコード型を取得し、ファイルのレコード型リストを生成します。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

32

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 33: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

ステップ 6 とステップ 7:両レコードのフィールド・プロパティの特定

COBOL to SQL*Loader 表を使用して、両レコードの各フィールドについて、フィー

ルド名、データ型、長さ、日付マスクを入力します。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

33

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 34: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

III.ターゲット表へのマッピングの作成と構成

1. ターゲット表への SQL*Loader マッピングの作成

以下のマップでは、ソースを 3 つのターゲット表にロードする際に、ファイル演

算子を使用しています。ファイル演算子は、ファイル内に定義された 2 つのレコー

ドを、次のように 2 つのマッピング演算子グループに自動的に分類します。

SQL*Loader によって生成されたコードは、このグループ分割に基づいて、先頭

フィールド内のデータを用いてレコードを特定します。このマッピングでは、EMPレコード型は 2 つの異なる表にロードされます。ファイルが表にロードされると、

式と関数を使用してデータを変換できます。この例では、SALARY フィールドの

小数点位置を調整しています。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

34

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 35: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

IV.配置と実行

表とマッピングを配置し、ターゲット・データベース内に表を作成します。マッ

ピングを実行すると、EMP 表、SALARY 表、PAY 表に、変換されたデータがロー

ドされます。

EMP 表のデータ

SALARY 表のデータ

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

35

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 36: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

PAY 表のデータ

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

36

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 37: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

事例 4:内部形式データを含むファイルからの表へのロード

この事例では、バイナリおよびパック形式データと、EBCDIC 形式外部データが

格納されたファイルを定義する方法を示します。ここでは、SQL*Loader を使用し

てファイルを表にロードします。

I. copybook の解析

以下の表に、EBCDIC 文字データ、バイナリ・データ、およびパック形式小数デー

タが格納された COBOL の copybook 定義を示します。copybook には、年、月、日

の各下位フィールドを含むグループ・フィールド EMP-HIRE-DATE があります。

ここでは、(下位フィールドは使用せず)このグループ・フィールドのみを使用

して、それを DATE フィールドにマッピングしている点に注目してください。年、

月、日を表す下位フィールドは無視しています。SQL*Loader 機能を使用してデー

タをクレンジングするには、DEFAULTIF および NULLIF 処理を指定します。た

とえば、EMP-NAME に NULLIF 句を指定すると、EMP-NAMES に空白が含まれ

ているとき、空白の代わりに NULL 値がロードされます。

COBOL から SQL*Loader 表へのマッピング

COBOL Copybook SQL*Loader の

フィールド名 長さ SQL*Loader

の型 01 EMPLOYEE-RECORD. 05 EMP-ID PIC 9(5) COMP. ID 2 INTEGER(2) 05 EMP-REGION PIC 9. REGION 1 INTEGER EXTERNAL(1) 05 EMP-DEPT PIC 999. DEPT 3 INTEGER EXTERNAL(3) 05 EMP-HIRE-DATE. HIRE_DATE 8 DATE(8) MMDDYYYY

DEFAULTIF EMP_HIRE_DATE= BLANKS

10 EMP-HIRE-MM PIC 99. 10 EMP-HIRE-DD PIC 99. 10 EMP-HIRE-YYYY PIC 9999. 05 EMP-SALARY PIC 9(7)V99 COMP-3.

SALARY 9 DECIMAL(9,2)

05 EMP-NAME PIC X(15). NAME 15 CHAR(15) NULLIF EMP_NAME= BLANKS

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

37

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 38: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

II.メタデータの定義と構成

1. フラット・ファイルの作成ウィザードを使用したフラット・ファイル

の定義

ステップ 1:ファイルとキャラクタ・セットの定義

ファイル定義の名前を入力し、キャラクタ・セットの識別名としてWE8EBCDIC500 を

選択します。これにより、SQL*Loader がファイル内のデータを EBCDIC データと

して認識できるようになります。デフォルトの物理ファイル名も、ここで指定し

ます。

ステップ 2:ファイルのプロパティ

ファイルを固定長レコード、固定長フィールドで定義します。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

38

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 39: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

ステップ 3:レコード型プロパティ

ファイルがレコード型を 1 つだけ含むことを指定します。

ステップ 4:レコードのフィールド・プロパティの特定

COBOL から SQL*Loader 表へのマッピングを使用して、各フィールドのフィール

ド名、データ型、長さ、日付マスクを入力します。ID フィールドは整数、SALARYフィールドは小数で(どちらも内部データ形式)定義されている点に注意してく

ださい。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

39

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 40: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

III.ターゲットへのマッピングの作成と構成

1. ターゲット表への SQL*Loader マッピングの作成

SQL*Loader を使用して、ファイル内データを単一の表にロードする簡単なマッピ

ングを作成しました。SQL*Loader は、キャラクタ・セットとデータ変換を自動的

に処理します。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

40

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 41: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

2. マッピングの構成

ファイルの場所、データ・オプション、またはチューニング・オプションを特定

する場合は、マッピングを構成します。バイナリ・データをロードする場合で、

ロード先プラットフォームとはバイナリ・データの内部表現が異なるプラット

フォームでファイルを作成したときには、バイト・オーダーを指定する必要があ

ります。バイト・オーダー・オプションは、次に示すように、マッピングの構成

で指定できます。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

41

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 42: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

IV.配置と実行

表とマッピングを配置し、ターゲット・データベースに定義します。マッピング

を実行すると、変換されたデータが表にロードされます。

EMP2 表のデータ

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

42

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 43: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

まとめ

Oracle Warehouse Builder 10g Release 2 は、COBOL レガシー・データなどのデータ

ファイルを Oracle のプラットフォームに統合するための一連のツールを提供しま

す。紹介した事例では、COBOL copybook を使用してデータを簡単にロードする

方法を示しました。

データのロード機能と外部表アクセス機能には、データファイルにアクセスする

ための強力で使いやすい機能が用意されています。抽出や変換のための SQL*Loaderの強力な機能を利用し、Oracle データベースへロードすることで、一括抽出が高

速かつ簡単に実行できます。また、外部表を使用することで、SQL をフル活用し

てファイルへのアクセスと変換を実行できます。

Oracle Warehouse Builder は、レガシー・データを移行したり、ほかのデータ移行

プログラムの一部としてレガシー・データをロードしたりする場合に最善のツー

ルです。

Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合

43

Oracle Corporation 発行「Oracle Warehouse Builder 10g Release 2 Integrating COBOL Based Legacy Data」の翻訳版です。

Page 44: Oracle Warehouse Builder 10g Release 2 COBOL …...Oracle Warehouse Builder 10g Release 2 COBOL ベースのレガシー・データの統合 はじめに 業務データの大半がレガシー環境に存在しているという事実に、多くの大企業は

Oracle Warehouse Builder 10g Release 2 - COBOL ベースのレガシー・データの統合 2007 年 3 月 著者:Joyce Scapicchio

Oracle Corporation World Headquarters 500 Oracle Parkway Redwood Shores, CA 94065 U.S.A. 海外からのお問合せ窓口: 電話:+1.650.506.7000 ファクシミリ:+1.650.506.7200 www.oracle.com Copyright © 2007, Oracle.All rights reserved. 本文書は情報提供のみを目的として提供されており、ここに記載される内容は

予告なく変更されることがあります。 本文書は一切間違いがないことを保証するものではなく、さらに、口述による

明示または法律による黙示を問わず、特定の目的に対する商品性もしくは適合

性についての黙示的な保証を含み、いかなる他の保証や条件も提供するもので

はありません。オラクル社は本文書に関するいかなる法的責任も明確に否認し、

本文書によって直接的または間接的に確立される契約義務はないものとします。

本文書はオラクル社の書面による許可を前もって得ることなく、いかなる目的

のためにも、電子または印刷を含むいかなる形式や手段によっても再作成また

は送信することはできません。 Oracle は米国 Oracle Corporation およびその子会社、関連会社の登録商標です。

その他の名称はそれぞれの会社の商標です。