如何从大型机数据集提取(导入)数据到excel表



我想构建一个计算批处理流的关键批的小应用程序。作为输入,我需要使用Mainframe数据集。如果可能的话,如果是动态的,也就是说,我可以选择当时应用的字段。

我在网上搜索了一下,但没有找到适合我想做的事情。有办法做到吗?

我在大型机库中有一个数据集,我想将该文件ftp到Excel。

在大型机上将文件转换为CSV(例如,通过REXX执行,z/OS UNIX shell脚本或Lua4z程序),然后通过FTP将CSV文件插入到Excel中。

您不需要将CSV文件传输到PC的文件系统,然后,作为单独的步骤,在Excel中打开它。

相反,您将CSV的FTP(或HTTP) URL定义为Excel中的数据源。这种技术的一个优点是,您可以从该URL刷新数据而无需在Excel中重新应用格式

网上有各种各样的教程。

在短暂的

:

    创建一个新的空白工作簿(我使用Excel 2010)。
  1. 选择空工作表中的第一个单元格(此步骤是不必要的-单元格已经被选中-如果您刚刚创建了工作簿)。
  2. Data选项卡,点击From Text
  3. 在"导入文本文件"对话框的"文件名"文本框中输入CSV文件的FTP URL。例如:

    ftp://zos1//u/me/data.csv

    (假设您的主机配置为允许FTP使用此路径)

    主机名(zos1)后面连续两个斜杠(/)表示该路径指向z/OS UNIX文件(/u/me/data.csv)。

    CSV文件必须在z/OS UNIX路径下。FTP客户端不接受mvs样式的(dsname)路径,例如'me.csv(data)'(即使是url编码的;也就是说,用单引号转义为%27);相反,cURL可以很好地接受这样的路径。

    主机上的CSV文件必须是ASCII编码的,而不是EBCDIC。(在这里,我不精确地使用了术语ASCII:您想要的精确字符编码取决于您的PC设置。你可能需要Windows-1252。)这是因为FTP客户端将默认传输类型设置为二进制。

  4. 输入您的用户名和密码(您的z/OS TSO用户名和密码)。
  5. 等待数据加载
  6. 格式化单元格。例如,设置任何包含日期/时间值的列的格式。
  7. Data选项卡上,单击Connections,选择连接(Excel为文件名指定URL时创建的连接),并清除复选框刷新时提示文件名

要刷新数据,用新的FTP请求的结果替换当前数据:在 data 选项卡上,单击 refresh All。数据被替换;单元格格式保持不变。

将ebcdic编码的CSV文件转换为ASCII

(严格来说,我指的是ISO-8859,而不是ASCII)

假设您有一个生成以EBCDIC编码的CSV文件的JCL。您希望通过FTP将该CSV文件作为ascii编码的z/OS UNIX (zFS)文件提供给Excel。

将输出CSV文件的现有DD语句替换为以下DD语句:

//OUTCSV      DD PATH='/u/me/data-ebcdic.csv',       
//            PATHOPTS=(OWRONLY,OCREAT,OTRUNC),
//            PATHDISP=(KEEP,DELETE),          
//            PATHMODE=(SIRUSR,SIWUSR,SIRGRP), 
//            FILEDATA=TEXT                    

将ddname OUTCSV替换为您的ddname,将zFS文件路径/u/me/data-ebcdic.csv替换为您想要使用的路径。

由于FILEDATA=TEXT参数,生成的CSV文件将在每行末尾有一个X'15'字节。

将以下步骤附加到JCL中:

//ICONV   EXEC PGM=IKJEFT01
//SYSTSIN DD *
BPXBATCH sh iconv -f IBM-037 -t iso8859-1 +
 /u/me/data-ebcdic.csv +
 > /u/me/data-ascii.csv
/*
//SYSPRINT DD  SYSOUT=*
//SYSTSPRT DD SYSOUT=*

如果你想知道为什么我通过BPXBATCH调用iconv作为shell命令,如下:

//ICONV    EXEC PGM=EDCICONV
//         PARM=('FROMCODE(IBM-037),TOCODE(iso8859-1)')

没有完全工作:它保留了X'15'字节,而运行iconv作为shell命令正确地将它们转换为X'0A'。(z/OS 2.2。)

您在评论中得到了一些很好的信息,共识似乎是转换为CSV(或TSV以避免在数据中嵌入逗号)是最简单的途径。这里有一些更多的信息,从另一个答案复制…

我强烈建议你先把文件转换成文本格式将它们转移到具有不同代码页的另一个框中。试图处理混合文本(必须翻译其代码页)和二进制(必须不翻译其代码页,但可能必须从大端序转换为小端序)比预先进行转换。

的SORT实用程序可以完成转换大型机。大型机SORT实用程序往往具有广泛的数据操作功能。你还可以使用其他的机制(其他实用程序,用您选择的语言编写的自定义代码,购买包),但这是我们倾向于做这些环境。

一旦你把平面文件转换成所有的数据都是文本,您可以通过FTP或SFTP或FTPS传输它们。

…谢谢你回来并补充更多的信息。希望这里的人提供了足够的信息来帮助你解决你的问题。

XML是另一种可能的面向文本的解决方案。创建它会花费更多的精力,但是您可以在Excel中设计电子表格并将其保存为XML文档,然后编写程序使用大型机数据集中的数据生成XML文本。虽然这比简单的CSV或TSV文件更难实现,但它具有实现CSV文件无法实现的电子表格公式和属性的优势。另一个优点是,您可以将XML文档附加到SMTP电子邮件注释中,并以"电子表格格式"将文档传递给您的客户机。

最新更新