我正在使用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;
答案 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选项。这样你就可以保留原始文件并将其与新压缩文件进行比较。