0 / 0
資料の 英語版 に戻る

Microsoft Excelファイルからデータを抽出する例(DataStage® )

最終更新: 2025年3月12日
Microsoft Excelファイルからデータを抽出する例(DataStage)

Microsoft Excel ファイルからデータを抽出するサンプル・ジョブを作成できます。 この例では、Sequential File ステージが出力ステージとして使用されています。 出力の作成には、他の任意の出力ステージを使用できます。

例のファイルを取得するには、IS_install\Clients\Samples\Connectors\UnstructuredData_Samples.zip ファイルを解凍します。

例 1: Microsoft Excel ファイルの範囲からデータを抽出する

Excelステージを使用して、Microsoft Excelスプレッドシートの範囲からデータを取得するジョブを作成します。

この例では、ある組織で働く従業員の詳細を含むMicrosoft ExcelのサンプルファイルEmployee1.xlsを使用します。 このサンプル・ファイルには3つのスプレッド・シートがある:Sheet1Sheet2Sheet3.Sheet1 には、組織内の各部門の従業員に関する情報が含まれています。 Sheet2 および Sheet3 はブランクです。 この例では、部門 B01 で働いている従業員に関するビジネス情報のみを抽出します。

Excel ファイル内の範囲からデータを抽出するには:
  1. 1つのExcelステージと1つのSequential Fileを含むジョブを作成します。
  2. エクセルのステージをダブルクリックします。
  3. 設定ウィンドウで、Microsoft Excel入力ファイルEmployee1.xlsの完全なファイルパスを指定します。
  4. 範囲オプションリストから、データ範囲全体を指定を選択して、特定の範囲のデータを抽出します。
  5. の中に範囲式フィールド、指定Sheet1!A16:K28
  6. 列のヘッダーフィールドから、データ範囲の最初の行を選択します。 データ範囲の最初の行が選択されると、最初の行はヘッダーとみなされ、エクセルのステージは2番目の行から抽出を開始する。
  7. Microsoft ExcelのE(電話番号)とI(生年月日)の列の横にあるチェックボックスをオフにします。
  8. インポートOKをクリックします。 インポートをクリックすると、コンフィギュレーションウィンドウの右下にあるマップペインが更新されます。
  9. 出力 > コラムページで、EMP_NO列のタイプを整数に変更し、OKをクリックする。
  10. Sequential File ステージをダブルクリックします。 上のプロパティページで、出力ファイルを作成するパスとファイル名を指定します。OutputOfExample1.txtをクリックし、わかりました
  11. ジョブを保存します。 これでジョブをコンパイルして実行できる。

次の表は、さまざまな部門の従業員情報を含む Microsoft Excel 入力ファイル内の情報を示しています。

表 1. 従業員の詳細を含むサンプル Microsoft Excel ファイル
EMP NO MID INIT PHONE NO HIRE DATE JOB SEX BIRTH DATE
Employees in DEPT_A00
10 CHRISTINE I HAAS 3978 1/1/1995 PRES F 8/24/1963
20 MICHAEL L THOMSON 3476 10/10/2003 MANAGER M 2/2/1976
30時間まで SALLY A KWAN 4738 4/5/2005 MANAGER F 5/11/1971
50 JOHN B GEYER 6789 8/17/1979 MANAGER M 9/15/1955
Employees in DEPT_B01
60 IRVING F STERN 6423 9/14/2003 MANAGER M 7/7/1975
70 EVA D PULASKI 7831 9/30/2003 MANAGER F 5/26/2003
90 EILEEN W HENDERSON 5498 8/15/2000 MANAGER F 5/15/1971
100 THEODORE Q SPENSER 742 6/19/2000 MANAGER M 12/18/1980
110 VINCENZO G LUCCHESSI 3490 5/16/1988 SALESREP M 11/5/1958
120 SEAN   O'CONNELL 2167 12/51993 CLERK M 10/18/1972
130 DELORES M QUINTANA 4578 7/28/2001 ANALYST F 9/15/1955
140 HEATHER A NICHOLLS 1793 12/15/2006 ANALYST F 1/19/1976
150 BRUCE   ADAMSON 4510 2/12/2002 デザイナー M 5/17/1972
160 ELIZABETH R PIANKA 3782 10/11/2006 デザイナー F 4/12/1980
1770 MASATOSHI J YOSHIMURA 2890 9/15/1999 デザイナー M 1/5/1981
180 MARILYN S SCOUTTEN 1682 7/7/2003 デザイナー F 2/21/1978

ジョブの実行後、OutputOfExample1.txt結果を表示するにはファイルを参照してください。

OutputOfExample1.txtファイルには、DEPT_B01 のデータが、PHONE NOとBIRTH DATE列を除いて表示されている:
"60","IRVING","F","STERN","2003-09-14","MANAGER ","M","72250","500"
"70","EVA","D","PULASKI","2005-09-30","MANAGER ","F","96170","700"
"90","EILEEN","W","HENDERSON","2000-08-15","MANAGER ","F","89750","600"
"100","THEODORE","Q","SPENSER","2000-06-19","MANAGER ","M","86150","500"
"110","VINCENZO","G","LUCCHESSI","1988-05-16","SALESREP","M","66500","900"
"120","SEAN"," ","O'CONNELL","1993-12-05","CLERK   ","M","49250","600"
"130","DELORES","M","QUINTANA","2001-07-28","ANALYST ","F","73800","500"
"140","HEATHER","A","NICHOLLS","2006-12-15","ANALYST ","F","68420","600"
"150","BRUCE"," ","ADAMSON","2002-02-12","DESIGNER","M","55280","500"
"160","ELIZABETH","R","PIANKA","2006-10-11","DESIGNER","F","62250","400"
"170","MASATOSHI","J","YOSHIMURA","1999-09-15","DESIGNER","M","44680","500"
"180","MARILYN","S","SCOUTTEN","2003-07-07","DESIGNER","F","51340","500"

例 2: 複数の Microsoft Excel シートからのデータの抽出

この例では、サンプルのMicrosoft ExcelファイルEmployee2.xlsを使用します。 このサンプル・ファイルには、DEPT A00DEPT B01DEPT C01、および DEPT D01 というシートがあります。 各シートには、部門内の従業員に関する情報が含まれています。

各シートのデータ構造は類似しています。 各シートには EMP NO、FIRST NAME、MID INIT、LAST NAME、PHONE NO、HIRE DATE、JOB、および ADDRESS という列があり、3 行目はヘッダーです。 ただし、各シートの行数は異なります。

複数のファイルからデータを抽出するには:
  1. 設定ウィンドウで、Microsoft Excel入力ファイルEmployee2.xlsの完全なファイルパスを指定します。
  2. 「範囲オプション」から、「開始行の指定」を選択します。
  3. 「範囲式」フィールドに、A3:H3 を指定します。 ステージがSpecify first rowオプションで実行され、範囲式に特定のシート名が指定されていない場合、ジョブは最後の行を見つけ、実行時に最後の行まで行を抽出します。
  4. 列のヘッダーで、データ範囲の最初の行を選択する。
  5. 上の財産タブで、プロパティの横にあるチェックボックスを選択して、プロパティ値を抽出します。 この例では、プロパティーとして「シート名」を選択します。
  6. インポート をクリックします。 ステージはカラムマッピングを生成する。
  7. を作るためにSheetNnameリストの最初の列を選択するには、SheetName列をクリックしてまでSheetName列はリストの最初の列です。
  8. マッピング テーブルで、ハイパーリンクを含む入力ファイルの ADDRESS 列に行を挿入します。
    1. クリック入れる
    2. 「Excel 項目」オプションで、列 ADDRESS を選択します。
    3. 新しい行のインポートオプションセルで、ハイパーリンクアドレスを選択する。
    4. 新しい行に DataStage 列名 EMAIL_ADDRESS を指定します。 その後、「OK」をクリックします。
  9. 出力 > コラムタブをクリックして、データ型やその他の属性を変更します。
  10. EMP_NO 列のタイプを「整数」に変更します。 OKをクリックします。
  11. 「プロパティー」ページで、出力ファイルを作成するパスを指定し、その後にファイル名 OutputOfExample2.txt を指定します。 OKをクリックします。
  12. ジョブを保存します。 これでジョブをコンパイルして実行できる。

各部門の従業員情報を異なるシートに格納したMicrosoft Excelファイルの入力例。 全シートからの従業員データのジョブ・エクストラクトは、以下の表の形で表示されます:

表 2. DEPT_A00 の従業員の情報
EMP NO MID INIT PHONE NO HIRE DATE JOB SEX BIRTH DATE
10 CHRISTINE I HAAS 3978 1/1/1995 PRES F 8/24/1963
20 MICHAEL L THOMSON 3476 10/10/2003 MANAGER M 2/2/1976
30時間まで SALLY A KWAN 4738 4/5/2005 MANAGER F 5/11/1971
50 JOHN B GEYER 6789 8/17/1979 MANAGER M 9/15/1955
表 3. DEPT_B01 の「Employees」の従業員の詳細
EMP NO MIDI NIT PHONE NO HIRE DATE JOB SEX BIRTH DATE
60 IRVING F STERN 6423 9/14/2003 MANAGER M 7/7/1975
70 EVA D PULASKI 7831 9/30/2003 MANAGER F 5/26/2003
90 EILEEN W HENDERSON 5498 8/15/2000 MANAGER F 5/15/1971
100 THEODORE Q SPENSER 742 6/19/2000 MANAGER M 12/18/1980
110 VINCENZO G LUCCHESSI 3490 5/16/1988 SALESREP M 11/5/1958
120 SEAN   O'CONNELL 2167 12/51993 CLERK M 10/18/1972
130 DELORES M QUINTANA 4578 7/28/2001 ANALYST F 9/15/1955
140 HEATHER A NICHOLLS 1793 12/15/2006 ANALYST F 1/19/1976
150 BRUCE   ADAMSON 4510 2/12/2002 デザイナー M 5/17/1972
160 ELIZABETH R PIANKA 3782 10/11/2006 デザイナー F 4/12/1980
1770 MASATOSHI J YOSHIMURA 2890 9/15/1999 デザイナー M 1/5/1981
180 MARILYN S SCOUTTEN 1682 7/7/2003 デザイナー F 2/21/1978

ジョブが実行された後、次の結果を含むOutputOfExample2.txtファイルを開くことができます。

"DEPT A00","10","CHRISTINE","I","HAAS","3978","1995-01-01","PRES    ","CHRISTINE HAAS","mailto:CHRISTINE%[email protected]"
"DEPT A00","20","MICHAEL","L","THOMPSON","3476","2003-10-10","MANAGER ","MICHAEL THOMPSON","mailto:MICHAEL%[email protected]"
"DEPT A00","30","SALLY","A","KWAN","4738","2005-04-05","MANAGER ","SALLY KWAN","mailto:SALLY%[email protected]"
"DEPT A00","50","JOHN","B","GEYER","6789","1979-08-17","MANAGER ","JOHN GEYER","mailto:JOHN%[email protected]"
"DEPT B01","60","IRVING","F","STERN","6423","2003-09-14","MANAGER ","IRVING STERN","mailto:IRVING%[email protected]"
"DEPT B01","70","EVA","D","PULASKI","7831","2005-09-30","MANAGER ","EVA PULASKI","mailto:EVA%[email protected]"
"DEPT B01","90","EILEEN","W","HENDERSON","5498","2000-08-15","MANAGER ","EILEEN HENDERSON","mailto:EILEEN%[email protected]"
"DEPT B01","100","THEODORE","Q","SPENSER","972","2000-06-19","MANAGER ","THEODORE SPENSER","mailto:THEODORE%[email protected]"
"DEPT B01","110","VINCENZO","G","LUCCHESSI","3490","1988-05-16","SALESREP","VINCENZO LUCCHESSI","mailto:VINCENZO%[email protected]"
"DEPT B01","120","SEAN"," ","O'CONNELL","2167","1993-12-05","CLERK   ","SEAN O'CONNELL","mailto:SEAN%20O'[email protected]"
"DEPT B01","130","DELORES","M","QUINTANA","4578","2001-07-28","ANALYST ","DELORES QUINTANA","mailto:DELORES%[email protected]"
"DEPT B01","140","HEATHER","A","NICHOLLS","1793","2006-12-15","ANALYST ","HEATHER NICHOLLS","mailto:HEATHER%[email protected]"
"DEPT B01","150","BRUCE"," ","ADAMSON","4510","2002-02-12","DESIGNER","BRUCE ADAMSON","mailto:BRUCE%[email protected]"
"DEPT B01","160","ELIZABETH","R","PIANKA","3782","2006-10-11","DESIGNER","ELIZABETH PIANKA","mailto:ELIZABETH%[email protected]"
"DEPT B01","170","MASATOSHI","J","YOSHIMURA","2890","1999-09-15","DESIGNER","MASATOSHI YOSHIMURA","mailto:MASATOSHI%[email protected]"
"DEPT B01","180","MARILYN","S","SCOUTTEN","1682","2003-07-07","DESIGNER","MARILYN SCOUTTEN","mailto:MARILYN%[email protected]"
"DEPT C01","190","JAMES","H","WALKER","2986","2004-07-26","DESIGNER","JAMES WALKER","mailto:JAMES%[email protected]"
"DEPT C01","200","DAVID"," ","BROWN","4501","2002-03-03","DESIGNER","DAVID BROWN","mailto:DAVID%[email protected]"
"DEPT C01","210","WILLIAM","T","JONES","942","1998-04-11","DESIGNER","WILLIAM JONES","mailto:WILLIAM%[email protected]"
"DEPT C01","220","JENNIFER","K","LUTZ","672","1998-08-29","DESIGNER","JENNIFER LUTZ","mailto:JENNIFER%[email protected]"
"DEPT C01","230","JAMES","J","JEFFERSON","2094","1996-11-21","CLERK   ","JAMES JEFFERSON","mailto:JAMES%[email protected]"
"DEPT C01","240","SALVATORE","M","MARINO","3780","2004-12-05","CLERK   ","SALVATORE MARINO","mailto:SALVATORE%[email protected]"
"DEPT C01","250","DANIEL","S","SMITH","961","1999-10-30","CLERK   ","DANIEL SMITH","mailto:DANIEL%[email protected]"
"DEPT C01","260","SYBIL","P","JOHNSON","8953","2005-09-11","CLERK   ","SYBIL JOHNSON","mailto:SYBIL%[email protected]"
"DEPT D01","270","MARIA","L","PEREZ","9001","2006-09-30","CLERK   ","MARIA PEREZ","mailto:MARIA%[email protected]"
"DEPT D01","280","ETHEL","R","SCHNEIDER","8997","1997-03-24","OPERATOR","ETHEL SCHNEIDER","mailto:ETHEL%[email protected]"
"DEPT D01","290","JOHN","R","PARKER","4502","2006-05-30","OPERATOR","JOHN PARKER","mailto:JOHN%[email protected]"
"DEPT D01","300","PHILIP","X","SMITH","2095","2002-06-19","OPERATOR","PHILIP SMITH","mailto:PHILIP%[email protected]"
"DEPT D01","310","MAUDE","F","SETRIGHT","3332","1994-09-12","OPERATOR","MAUDE SETRIGHT","mailto:MAUDE%[email protected]"
"DEPT D01","320","RAMLAL","V","MEHTA","9990","1995-07-07","FIELDREP","RAMLAL MEHTA","mailto:RAMLAL%[email protected]"
"DEPT D01","330","WING"," ","LEE","2103","2006-02-23","FIELDREP","WING LEE","mailto:WING%[email protected]"
"DEPT D01","340","JASON","R","GOUNOT","5698","1977-05-05","FIELDREP","JASON GOUNOT","mailto:JASON%[email protected]"

例 3: Microsoft Excel ファイル内の異なるデータ構造を持つ複数の範囲からのデータの抽出

この例では、サンプルのMicrosoft ExcelファイルEmployee3.xlsを使用します。 このサンプル・ファイルには、異なるデータ構造を持つ Departments および Employees という 2 つのスプレッドシートがあります。

この例では、Excel ステージに 2 つの出力リンクがあります。 Departments シートから最初のリンクにデータを抽出し、Employees シートから 2 番目のリンクにデータを抽出します。

異なるデータ構造を抽出するには:
  1. 1つのExcelステージと2つのSequential Fileを含むジョブを作成します。 リンクの名前を「部門」や「従業員」に変更できます。
  2. エクセルのステージをダブルクリックします。 設定ウィンドウで、Microsoft Excel入力ファイルEmployee3.xlsの完全なファイルパスを指定します。
  3. Departments スプレッドシートから抽出するデータを指定し、以下のサブステップを完了して列マッピングを生成します。
    1. からリンクリストボックス、選択部門
    2. から範囲オプションリスト、選択範囲全体を指定する
    3. 「範囲式」フィールドから、以下を指定します。Departments!A2:C6 .
    4. 列のヘッダーから、データ範囲の最初の行を選択します。
    5. 「インポート」をクリックし、「OK」をクリックします。
  4. Employees スプレッドシートから抽出するデータを指定し、以下のサブステップを実行して列マッピングを生成します。
    1. 「リンク」リスト・ボックスから、Employees を選択します。
    2. から範囲オプションリスト、範囲全体を指定する
    3. 「範囲式」フィールドから、以下を指定します。Employees!A2:L34.
    4. 「列ヘッダー」から、「データ範囲の最初の行」を選択します。
    5. 「インポート」をクリックし、「OK」をクリックします。
  5. 「出力」ページで、出力名として Employees リンクを選択します。
  6. Columnsページで、EMP_NO列のデータ型を整数に変更し、OKをクリックします。
  7. 最初のSequential FileステージOutput_1出力ファイルを作成するパスとファイル名を指定しますOutputOfExample3_1.txt
  8. 2番目のSequential FileステージOutput_2をダブルクリックし、出力ファイルを作成するパスを指定し、その後にファイル名OutputOfExample3_2.txtを指定する
  9. ジョブを保存します。 これでジョブをコンパイルして実行できる。

入力例のMicrosoft ExcelファイルEmployee3.xlsは、Departmentsシートに部門情報を、Employeesシートに従業員情報を含んでいます。 このジョブは、部門データを OutputOfExample3_1.txt ファイルに、従業員データを OutputOfExample3_2.txt に抽出します。

ジョブの実行後、OutputOfExample3_1.txt ファイルと OutputOfExample3_2.txt ファイルを開きます。 OutputOfExample3_1.txt ファイルおよび OutputOfExample3_2.txt ファイルは、それぞれ Employee.xls ファイルの Departments シートおよび Employees シートと一致している必要があります。