读取压缩的sas数据集并在运行中压缩它们

时间:2015-04-14 20:24:12

标签: unix sas gzip

我正在使用gzip压缩功能在unix服务器上处理大文件,并且出于空间目的,希望文件保持压缩。我知道如何读取压缩的txt文件,但是希望: 1)压缩从压缩的txtfile创建的数据集 2)稍后在另一个datastep / procedure中设置此压缩sas数据集。

这可能吗?如果是这样,请改变下面的代码,这就是我想要做的事情:

libname lib "path";
filename txtfile PIPE "gzip -dc filepath";

data lib.ds1; **would like this to be a zipped sas dataset**;
    infile txtfile dlm="|" missover dsd;
    input *columns*;
run;
data lib.ds2; **would like this to be a zipped sas dataset**;
    set lib.ds1; *setting the zipped sas dataset;
run;

2 个答案:

答案 0 :(得分:2)

SAS无法使用您想要的简单datastep以压缩格式(* .7z / * .gzip / * .zip等)存储sas数据集。您需要使用外部zip实用程序(使用x语句等)或使用ods包。在读取之前和读取SAS数据集之后,需要单独编码单独的逻辑用于解压缩和压缩zip文件。

尽管SAS具有内置功能,可以压缩使用COMPRESS =数据集选项或系统选项创建的数据集来压缩数据文件。压缩非常好。

OPTIONS COMPRESS=(YES|CHAR|BINARY)

DATA MYSASDATA(COMPRESS=YES|CHAR|BINARY);

您可以在SAS用于压缩数据集的算法的语言参考中阅读更多内容。

有关详细信息,请参阅SAS语言参考中的以下链接:http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a000202890.htm

答案 1 :(得分:2)

尝试从SAS会话执行GZIP命令。

data _null_;
  command = 'gzip -c /path/ds2.sas7bdat > /path/ds2.sas7bdat.gz';
  call system (command);
run;

出于测试目的,请保留-c选项。这样你就可以保留原始文件并将其与新压缩文件进行比较。