从 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,其中包含某组织员工的详细信息。 此示例文件有三张电子表格:Sheet1、Sheet2和Sheet3.Sheet1包含组织中每个部门的员工信息。 Sheet2 和Sheet3是空白的。 在此示例中,您仅提取为部门工作的员工的业务信息B01 。
- 要从 Excel 文件的一个范围中提取数据:
- 创建包含一个 Excel 阶段和一个Sequential File阶段的任务。
- 双击 Excel 阶段。
- 在 配置窗口中,指定 Microsoft Excel 输入文件 Employee1.xls 的完整文件路径。
- 从 范围选项列表中,选择 指定整个数据范围,以提取特定范围内的数据。
- 在里面范围表达式字段,指定Sheet1!A16:K28。
- 从 列标题字段中,选择 第一行数据范围。 选择 第一行数据范围时,第一行被视为标题,Excel 阶段从第二行开始提取。
- 清除 Microsoft Excel E 列(电话号码)和 I 列(出生日期)旁边的复选框。
- 单击 Import 和 OK 。 单击导入后,配置窗口右下方的 "地图 "窗格将更新。
- 在 页面中,将 EMP_NO 列的类型更改为 Integer ,然后单击 OK 。
- 双击 Sequential 文件阶段。 在特性页面上,指定要创建输出文件的路径,后跟文件名OutputOfExample1.txt,然后点击好的。
- 保存作业。 现在,您可以编译并运行作业。
下表显示包含不同部门员工信息的 Microsoft Excel 输入文件中的信息。
| 雇员编号 | 名字 | MID INIT | 姓氏 | PHONE NO | 雇佣日期 | 作业 | 性别 | Birth date |
|---|---|---|---|---|---|---|---|---|
| 员工DEPT_A00 | ||||||||
| 10 | CHRISTINE | I | HAAS | 3978 | 1995 年 1 月 1 日 | PRES | F | 1963 年 8 月 24 日 |
| 20 | MICHAEL | L | 汤姆逊 | 3476 | 2003 年 10 月 10 日 | 管理器 | M | 1976 年 2 月 2 日 |
| 30 | SALLY | A | KWAN | 4738 | 2005 年 4 月 5 日 | 管理器 | F | 1971 年 5 月 11 日 |
| 50 | JOHN | B | GEYER | 6789 | 1979 年 8 月 17 日 | 管理器 | M | 1955 年 9 月 15 日 |
| 员工DEPT_B01 | ||||||||
| 60 | IRVING | F | STERN | 6423 | 2003 年 9 月 14 日 | 管理器 | M | 1975 年 7 月 7 日 |
| 70 | EVA | D | PULASKI | 7831 | 2003 年 9 月 30 日 | 管理器 | F | 2003 年 5 月 26 日 |
| 90 | EILEEN | W | HENDERSON | 5498 | 2000 年 8 月 15 日 | 管理器 | F | 1971 年 5 月 15 日 |
| 1 | THEODORE | Q | SPENSER | 742 | 2000 年 6 月 19 日 | 管理器 | M | 1980 年 12 月 18 日 |
| 110 | VINCENZO | G | LUCCHESSI | 3490 | 1988 年 5 月 16 日 | SALESREP | M | 1958 年 11 月 5 日 |
| 120 | SEAN | O'CONNELL | 2167 | 1993年12月5日 | 职员 | M | 1972 年 10 月 18 日 | |
| 130 | 德洛雷斯 | M | QUINTANA | 4578 | 2001 年 7 月 28 日 | ANALYST | F | 1955 年 9 月 15 日 |
| 140 | HEATHER | A | NICHOLLS | 1793 | 2006年12月15日 | ANALYST | F | 1976 年 1 月 19 日 |
| 150 | BRUCE | ADAMSON | 4510 | 2002 年 2 月 12 日 | DESIGNER | M | 1972 年 5 月 17 日 | |
| 160 | ELIZABETH | R | PIANKA | 3782 | 2006 年 10 月 11 日 | DESIGNER | F | 1980 年 4 月 12 日 |
| 1770 | MASATOSHI | J | YOSHIMURA | 2890 | 1999 年 9 月 15 日 | DESIGNER | M | 1981 年 1 月 5 日 |
| 180 | MARILYN | S | SCOUTTEN | 1682 | 2003 年 7 月 7 日 | DESIGNER | F | 1978 年 2 月 21 日 |
作业运行后,您可以打开OutputOfExample1.txt文件来查看结果。
"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 A00 ,DEPT B01 ,DEPT C01 , 和DEPT D01。 每张表包含有关该部门员工的信息。
各sheet的数据结构类似。 每张表都有 EMP NO、FIRST NAME、MID INIT、LAST NAME、PHONE NO、HIRE DATE、JOB 和 ADDRESS 列,第三行是标题。 但每张表的行数不同。
- 要从多个文件提取数据:
- 在 配置窗口中,指定 Microsoft Excel 输入文件 Employee2.xls 的完整文件路径。
- 来自范围选项, 选择指定起始行。
- 在里面范围表达式字段,指定A3:H3 。 当阶段运行时使用 "指定第一行 "选项,且 Range 表达式中未指明特定工作表名称时,作业会查找最后一行,并在运行时提取到最后一行的行。
- 在列标题中,选择第一行数据范围。
- 在财产选项卡上,选中属性旁边的复选框以提取属性值。 在此示例中,选择工作表名称作为财产。
- 单击导入。 该阶段生成列映射。
- 为了使SheetNname列列表中的第一列,选择SheetName列并点击向上直到SheetName列是列表中的第一列。
- 在映射表中,为包含超链接的输入文件中的 ADDRESS 列插入一行。
- 点击插入
- 在里面Excel 项目选项,选择列地址。
- 在新行的 Import 选项单元格中,选择 Hyper 链接地址。
- 指定DataStage新行的列名 EMAIL_ADDRESS。 然后,单击 OK 。
- 单击 选项卡更改数据类型或其他属性。
- 改变类型EMP_NO列至整数。 单击确定。
- 在特性页面上,指定要创建输出文件的路径,后跟文件名OutputOfExample2.txt。 单击确定。
- 保存作业。 现在,您可以编译并运行作业。
示例输入 Microsoft Excel 文件,在不同的表单中包含每个部门的员工信息。 从所有工作表中提取的员工数据以下列表格的形式显示:
| 雇员编号 | 名字 | MID INIT | 姓氏 | PHONE NO | 雇佣日期 | 作业 | 性别 | Birth date |
|---|---|---|---|---|---|---|---|---|
| 10 | CHRISTINE | I | HAAS | 3978 | 1995 年 1 月 1 日 | PRES | F | 1963 年 8 月 24 日 |
| 20 | MICHAEL | L | 汤姆逊 | 3476 | 2003 年 10 月 10 日 | 管理器 | M | 1976 年 2 月 2 日 |
| 30 | SALLY | A | KWAN | 4738 | 2005 年 4 月 5 日 | 管理器 | F | 1971 年 5 月 11 日 |
| 50 | JOHN | B | GEYER | 6789 | 1979 年 8 月 17 日 | 管理器 | M | 1955 年 9 月 15 日 |
| 雇员编号 | 名字 | MIDI 尼特 | 姓氏 | PHONE NO | 雇佣日期 | 作业 | 性别 | Birth date |
|---|---|---|---|---|---|---|---|---|
| 60 | IRVING | F | STERN | 6423 | 2003 年 9 月 14 日 | 管理器 | M | 1975 年 7 月 7 日 |
| 70 | EVA | D | PULASKI | 7831 | 2003 年 9 月 30 日 | 管理器 | F | 2003 年 5 月 26 日 |
| 90 | EILEEN | W | HENDERSON | 5498 | 2000 年 8 月 15 日 | 管理器 | F | 1971 年 5 月 15 日 |
| 1 | THEODORE | Q | SPENSER | 742 | 2000 年 6 月 19 日 | 管理器 | M | 1980 年 12 月 18 日 |
| 110 | VINCENZO | G | LUCCHESSI | 3490 | 1988 年 5 月 16 日 | SALESREP | M | 1958 年 11 月 5 日 |
| 120 | SEAN | O'CONNELL | 2167 | 1993年12月5日 | 职员 | M | 1972 年 10 月 18 日 | |
| 130 | 德洛雷斯 | M | QUINTANA | 4578 | 2001 年 7 月 28 日 | ANALYST | F | 1955 年 9 月 15 日 |
| 140 | HEATHER | A | NICHOLLS | 1793 | 2006年12月15日 | ANALYST | F | 1976 年 1 月 19 日 |
| 150 | BRUCE | ADAMSON | 4510 | 2002 年 2 月 12 日 | DESIGNER | M | 1972 年 5 月 17 日 | |
| 160 | ELIZABETH | R | PIANKA | 3782 | 2006 年 10 月 11 日 | DESIGNER | F | 1980 年 4 月 12 日 |
| 1770 | MASATOSHI | J | YOSHIMURA | 2890 | 1999 年 9 月 15 日 | DESIGNER | M | 1981 年 1 月 5 日 |
| 180 | MARILYN | S | SCOUTTEN | 1682 | 2003 年 7 月 7 日 | DESIGNER | F | 1978 年 2 月 21 日 |
任务运行后,您可以打开包含以下结果的 OutputOfExample2.txt 文件。
"DEPT A00","10","CHRISTINE","I","HAAS","3978","1995-01-01","PRES ","CHRISTINE HAAS","mailto:CHRISTINE%20HAAS@abc.com"
"DEPT A00","20","MICHAEL","L","THOMPSON","3476","2003-10-10","MANAGER ","MICHAEL THOMPSON","mailto:MICHAEL%20THOMPSON@abc.com"
"DEPT A00","30","SALLY","A","KWAN","4738","2005-04-05","MANAGER ","SALLY KWAN","mailto:SALLY%20KWAN@abc.com"
"DEPT A00","50","JOHN","B","GEYER","6789","1979-08-17","MANAGER ","JOHN GEYER","mailto:JOHN%20GEYER@abc.com"
"DEPT B01","60","IRVING","F","STERN","6423","2003-09-14","MANAGER ","IRVING STERN","mailto:IRVING%20STERN@abc.com"
"DEPT B01","70","EVA","D","PULASKI","7831","2005-09-30","MANAGER ","EVA PULASKI","mailto:EVA%20PULASKI@abc.com"
"DEPT B01","90","EILEEN","W","HENDERSON","5498","2000-08-15","MANAGER ","EILEEN HENDERSON","mailto:EILEEN%20HENDERSON@abc.com"
"DEPT B01","100","THEODORE","Q","SPENSER","972","2000-06-19","MANAGER ","THEODORE SPENSER","mailto:THEODORE%20SPENSER@abc.com"
"DEPT B01","110","VINCENZO","G","LUCCHESSI","3490","1988-05-16","SALESREP","VINCENZO LUCCHESSI","mailto:VINCENZO%20LUCCHESSI@abc.com"
"DEPT B01","120","SEAN"," ","O'CONNELL","2167","1993-12-05","CLERK ","SEAN O'CONNELL","mailto:SEAN%20O'CONNELL@abc.com"
"DEPT B01","130","DELORES","M","QUINTANA","4578","2001-07-28","ANALYST ","DELORES QUINTANA","mailto:DELORES%20QUINTANA@abc.com"
"DEPT B01","140","HEATHER","A","NICHOLLS","1793","2006-12-15","ANALYST ","HEATHER NICHOLLS","mailto:HEATHER%20NICHOLLS@abc.com"
"DEPT B01","150","BRUCE"," ","ADAMSON","4510","2002-02-12","DESIGNER","BRUCE ADAMSON","mailto:BRUCE%20ADAMSON@abc.com"
"DEPT B01","160","ELIZABETH","R","PIANKA","3782","2006-10-11","DESIGNER","ELIZABETH PIANKA","mailto:ELIZABETH%20PIANKA@abc.com"
"DEPT B01","170","MASATOSHI","J","YOSHIMURA","2890","1999-09-15","DESIGNER","MASATOSHI YOSHIMURA","mailto:MASATOSHI%20YOSHIMURA@abc.com"
"DEPT B01","180","MARILYN","S","SCOUTTEN","1682","2003-07-07","DESIGNER","MARILYN SCOUTTEN","mailto:MARILYN%20SCOUTTEN@abc.com"
"DEPT C01","190","JAMES","H","WALKER","2986","2004-07-26","DESIGNER","JAMES WALKER","mailto:JAMES%20WALKER@abc.com"
"DEPT C01","200","DAVID"," ","BROWN","4501","2002-03-03","DESIGNER","DAVID BROWN","mailto:DAVID%20BROWN@abc.com"
"DEPT C01","210","WILLIAM","T","JONES","942","1998-04-11","DESIGNER","WILLIAM JONES","mailto:WILLIAM%20JONES@abc.com"
"DEPT C01","220","JENNIFER","K","LUTZ","672","1998-08-29","DESIGNER","JENNIFER LUTZ","mailto:JENNIFER%20LUTZ@abc.com"
"DEPT C01","230","JAMES","J","JEFFERSON","2094","1996-11-21","CLERK ","JAMES JEFFERSON","mailto:JAMES%20JEFFERSON@abc.com"
"DEPT C01","240","SALVATORE","M","MARINO","3780","2004-12-05","CLERK ","SALVATORE MARINO","mailto:SALVATORE%20MARINO@abc.com"
"DEPT C01","250","DANIEL","S","SMITH","961","1999-10-30","CLERK ","DANIEL SMITH","mailto:DANIEL%20SMITH@abc.com"
"DEPT C01","260","SYBIL","P","JOHNSON","8953","2005-09-11","CLERK ","SYBIL JOHNSON","mailto:SYBIL%20JOHNSON@abc.com"
"DEPT D01","270","MARIA","L","PEREZ","9001","2006-09-30","CLERK ","MARIA PEREZ","mailto:MARIA%20PEREZ@abc.com"
"DEPT D01","280","ETHEL","R","SCHNEIDER","8997","1997-03-24","OPERATOR","ETHEL SCHNEIDER","mailto:ETHEL%20SCHNEIDER@abc.com"
"DEPT D01","290","JOHN","R","PARKER","4502","2006-05-30","OPERATOR","JOHN PARKER","mailto:JOHN%20PARKER@abc.com"
"DEPT D01","300","PHILIP","X","SMITH","2095","2002-06-19","OPERATOR","PHILIP SMITH","mailto:PHILIP%20SMITH@abc.com"
"DEPT D01","310","MAUDE","F","SETRIGHT","3332","1994-09-12","OPERATOR","MAUDE SETRIGHT","mailto:MAUDE%20SETRIGHT@abc.com"
"DEPT D01","320","RAMLAL","V","MEHTA","9990","1995-07-07","FIELDREP","RAMLAL MEHTA","mailto:RAMLAL%20MEHTA@abc.com"
"DEPT D01","330","WING"," ","LEE","2103","2006-02-23","FIELDREP","WING LEE","mailto:WING%20LEE@abc.com"
"DEPT D01","340","JASON","R","GOUNOT","5698","1977-05-05","FIELDREP","JASON GOUNOT","mailto:JASON%20GOUNOT@abc.com"
示例 3:从 Microsoft Excel 文件中具有不同数据结构的多个范围中提取数据
本示例使用 Microsoft Excel 示例文件 Employee3.xls。 此示例文件包含两个电子表格,Departments和Employees,它们具有不同的数据结构。
在本例中,Excel 阶段有两个输出链接。 您从 Departments 工作表中提取数据到第一个链接,从 Employees 工作表中提取数据到第二个链接。
- 提取不同的数据结构:
- 创建包含一个 Excel 阶段和两个Sequential File阶段的任务。 您可以将链接重命名为部门和员工。
- 双击 Excel 阶段。 在 配置窗口中,指定 Microsoft Excel 输入文件 Employee3.xls 的完整文件路径。
- 指定要从 Departments 电子表格中提取的数据,并完成以下子步骤以生成列映射。
- 来自关联列表框,选择部门。
- 来自范围选项列表,选择指定整个范围。
- 来自范围表达式字段,指定部门!A2:C6 .
- 从 列标题中,选择 第一行数据范围。
- 点击进口,然后点击好的。
- 指定要从中提取的数据雇员电子表格并完成以下子步骤来生成列映射。
- 来自关联列表框,选择雇员。
- 来自范围选项列表,指定整个范围。
- 来自范围表达式字段,指定雇员!A2:L34.
- 来自列标题,选择第一行数据范围。
- 点击进口,然后点击好的。
- 在输出页面上,选择雇员link 作为输出名称。
- 在 "列 "页面,将 EMP_NO 列的数据类型更改为整数,然后单击 OK 。
- 双击第一个Sequential File阶段Output_1并指定创建输出文件的路径,后跟文件名OutputOfExample3_1.txt。
- 双击第二个 Sequential File 阶段 Output_2,并指定创建输出文件的路径,然后是文件名 OutputOfExample3_2.txt
- 保存作业。 现在,您可以编译并运行作业。
输入 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文件。