slash 发表于 2014-2-16 20:00:54

利用ODS创建zip文件

今天为大家奉上一小段SAS程序,该段程序的功能就是创建zip压缩文件。可以将程序输出的rtf文件、txt文件、csv文件等文件生成一个压缩包。废话不多说,程序如下所示:
复古怀旧复古怀旧

/*设置路径*/
%let dir=D:\test;
/*分配逻辑库*/
libname out "&dir";
/*定义一个csv文件*/
filename newcsv "&dir\pct.csv";
/*输出一个数据集到csv文件*/
ods csv file=newcsv;
proc print data=sashelp.class label;
run;
ods csv close;

/*创建一个rtf格式的说明文件*/
filename rm "&dir/readme.rtf";
ods rtf file=rm style=printer text="数据集信息:";
proc datasets lib=sashelp nolist;
      contents data=class;
quit;
ods rtf close;

/*利用ODS PACKAGE创建zip文件*/
ods package open nopf ;
/*将csv文件加入压缩包,path表示将该文件放入data文件夹中*/
ods package add file=newcsv path="data/";
/*将rtf文件加入压缩包*/
ods package add file=rm;
/*创建压缩包,制定压缩包名字、路径*/
ods package publish archive properties (archive_name="carstats.zip" archive_path="&dir");
ods package close;


结果:




额外说明:
ods package open nopf ;
nopf选项:
ODS PACKAGE语句本来是用来共享SAS Stored Process(存储过程)的结果,会生成一个PackageMetaData的文件,该文件保存了该存储过程输出结果的相应信息。SAS其他应用程序通过该文件来读取存储过程的输出结果。但在此处我们不需要该文件,因此用nopf选项就可以避免生成该文件。大家也可以将该选项去掉,自己尝试一下。


webgu 发表于 2014-2-16 20:17:39

Slash的又一力作!

mjx 发表于 2014-2-18 20:45:15

试了,代码出错。似乎package不认识

slash 发表于 2014-2-22 20:11:52

mjx 发表于 2014-2-18 20:45
试了,代码出错。似乎package不认识

是吗?你的是哪个版本?

ahuige 发表于 2014-3-4 16:56:04

very interesting. I can use it on my company's closed system.

remeva 发表于 2014-3-17 16:46:15

51   ods rtf close;
52
53   /*利用ODS PACKAGE创建zip文件*/
54   ods package open nopf ;
         -------
         180
ERROR 180-322: 语句无效或未按正确顺序使用。
55   /*将csv文件加入压缩包,path表示将该文件放入data文件夹中*/
56   ods package add file=newcsv path="data/";
         -------
         180
ERROR 180-322: 语句无效或未按正确顺序使用。
57   /*将rtf文件加入压缩包*/
58   ods package add file=rm;
         -------
         180
ERROR 180-322: 语句无效或未按正确顺序使用。
59   /*创建压缩包,制定压缩包名字、路径*/
60   ods package publish archive properties (archive_name="carstats.zip" archive_path="&dir");
         -------
         180
61   ods package close;
         -------
         180
ERROR 180-322: 语句无效或未按正确顺序使用。



9.1.3

slash 发表于 2014-3-17 17:10:50

remeva 发表于 2014-3-17 16:46
51   ods rtf close;
52
53   /*利用ODS PACKAGE创建zip文件*/


由于目前我没有9.1.3的版本,可能是因为9.1没有这个语句的缘故吧。你在帮助文档看看,是不是有这个语句。

可以按照以下路径寻找:
SAS Products——Base SAS——SAS 9.3 Output Delivery System User's Guide——ODS Statement——Dictionary of ODS Language Statements
你看是否能够找到ODS PACKAGE语句,如下所示:


如果找不到该语句,说明就是9.1不支持了。

mjx 发表于 2014-3-21 23:19:01

似乎9.1不支持

乾坤神龙 发表于 2016-8-1 10:41:04

请问能够按照Libname将一个文件夹里面包含的所有SAS数据集作为一个整体进行压缩?
页: [1]
查看完整版本: 利用ODS创建zip文件