如何从大型机数据集中提取(导入)数据以优化表格

我想build立一个小应用程序来计算批量stream的关键批次。 作为input,我需要使用大型机数据集。 如果可能,dynamic的,也就是说,我可以select当时适用的领域。

我已经在网上search了一下,但没有find适合我想做的事情。 有没有办法做到这一点?

在评论中你已经有了一些很好的信息,一致认为转换为CSV(或TSV,以避免逗号embedded数据)是最简单的路线。 这里有更多的信息,从另一个答案复制…

我强烈build议您在将文件转换为另一个具有不同代码页的框之前将文件转换为文本格式。 试图处理混合文本(必须翻译其代码页)和二进制文件(不能翻译其代码页,但可能必须从大端转换为小端)比先前的转换更困难。

转换可能通过大型机上的SORT实用程序完成。 大型机SORT实用程序往往具有广泛的数据处理function。 还有其他机制可以使用(其他实用程序,用您select的语言编写的自定义代码,购买的软件包),但这是我们在这种情况下倾向于做的。

一旦将平面文件转换为所有数据都是文本,就可以通过FTP或SFTP或FTPS进行传输。

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

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

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

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

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

网上有各种各样的教程来做这个。

简单来说:

  1. 创build一个新的空白工作簿(我正在使用Excel 2010)。
  2. select空工作表中的第一个单元格(这一步是不必要的 – 单元格已被选中 – 如果你只是刚刚创build的工作簿)。
  3. 数据选项卡上 ,单击来自文本
  4. 在“ 导入文本文件”对话框的“ 文件名”文本框中,inputCSV文件的FTP URL。 例如:

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

    (这假定您的主机被configuration为允许使用此path的FTP。)

    主机名(zos1)后面的两个连续的斜杠(/)字符表示该path指的是z / OS UNIX文件(/u/me/data.csv)。

    CSV文件必须位于z / OS UNIXpath中。 FTP客户端不接受诸如“me.csv(data)”之类的MVS风格(dsname)path(即使在URL编码的情况下;也就是说,单引号转义为%27)。 相反,cURL接受这样的path就好了。

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

  5. input您的用户名和密码(您的z / OS TSO用户标识和密码)。
  6. 等待数据加载。
  7. 格式化单元格。 例如,设置包含date/时间值的任何列的格式。
  8. 在“ 数据”选项卡上,单击“ 连接” ,select连接(为指定文件名的URL时创build的Excel),并清除“ 刷新时提示input文件名 ”checkbox。

要刷新数据,请将当前数据replace为新的FTP请求的结果:在“ 数据”选项卡上,单击“ 全部刷新” 。 数据被replace; 单元格格式保持不变。

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

(严格地说,我的意思是ISO-8859,而不是ASCII。)

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

用以下DD语句replace输出CSV文件的现有DD语句:

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

将ddname OUTCSVreplace为您的ddname,将zFS文件path/u/me/data-ebcdic.csv为您要使用的path/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=* 

如果您想知道为什么我通过BPXBATCHiconv作为shell命令BPXBATCH ,请执行以下操作:

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

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

XML将是另一种可能的文本解决scheme。 这需要更多的努力来创build,但是您可以在Excel中devise电子表格并保存为XML文档,然后编写一个程序来使用大型机数据集中的数据生成XML文本。 虽然这比简单的CSV或TSV文件更难实现,但它具有实现CSV文件无法执行的电子表格公式和属性的优点。 另一个好处是,您可以将XML文档附加到SMTP电子邮件注释中,并以“电子表格格式”将文档交付给客户端。