首页 > 解决方案 > 如何导入压缩的“.sas7bdat”文件?

问题描述

我有一个sas7bdat格式的文件,但它是压缩的。

我可以解压缩文件并处理它,但这会让我失去硬盘空间和时间。

所以我在 SAS 上尝试了这段代码:

filename myfile ZIP 'C:\...\data.zip' member="data.sas7bdat" ;

data yoyo;
   infile myfile (data.sas7bdat);
   input; 
   put _infile_;
run;

但是我在 WORK 库中得到了一个空的 yoyo 表。

如何成功导入 data.sas7bdat ?

谢谢,

标签: saszip

解决方案


您需要先解压缩数据集,然后 SAS 才能使用它。所以你需要找一个有足够空间存放完全展开的文件的地方。

请注意,您的代码试图在 ZIP 文件中指定文件的成员名称两次。你应该只做一次。将文件引用指向聚合位置并在引用中使用成员名称。或者将文件引用指向单个成员,然后只使用文件引用。

这是一种将文件展开到您当前的 WORK 文件夹中的方法。

%let member=data.sas7bdat;
filename in zip 'C:\...\data.zip' member="&member" recfm=n;
filename out "%sysfunc(pathname(work))/&member" recfm=n;
data _null_;
   rc=fcopy('in','out');
run;

您现在可以使用名称 WORK.DATA 处理该文件。

proc print data=work.data(obs=1); run;

如果您想直接从 ZIP 文件中读取数据,那么它需要是原始(文本)数据或流格式,如 SAS V5 XPORT 文件。


推荐阅读