HULFT転送されてきたテキストファイルを読み込んでデータセット化するときに、元のファイルは残しておきたいことがあります。そのときに、圧縮して保存しとくと容量削減できて良いです。下のサンプルは、お馴染みCLASSのデータを使ったものです。名前と年齢をZIPファイルに出力し、後半のDATAステップでZIPファイルから読み取っています。
23 filename foo ZIP 'C:\temp\testzip.zip';
24
25 /* write to zip file */
26 data _null_;
27 file foo(class);
28 set sashelp.class;
29 put name age;
30 run;
NOTE: ファイルライブラリFOO :
Directory=C:\temp\testzip.zip
NOTE: 出力ファイルFOO(class) :
Filename=C:\temp\testzip.zip,
Member Name=class
NOTE: 19レコードをファイルライブラリFOOに書き込みました。
最小レコード長は9です。
最大レコード長は15です。
NOTE: 19レコードを出力ファイルFOO(class)に書き込みました。
最小レコード長は9です。
最大レコード長は15です。
NOTE: データセットSASHELP.CLASSから19オブザベーションを読み込みました。
NOTE: DATAステートメント処理(合計処理時間):
処理時間 0.01 秒
CPU時間 0.01 秒
31
32 /* read from zip file */
33 data work.class;
34 infile foo(class);
35 input name $ age;
36 run;
NOTE: 入力ファイルライブラリFOO:
Directory=C:\temp\testzip.zip
NOTE: 入力ファイルFOO(class) :
Filename=C:\temp\testzip.zip,
Member Name=class
NOTE: 19レコードを入力ファイルライブラリFOOから読み込みました。
最小レコード長は9です。
最大レコード長は15です。
NOTE: 19レコードを入力ファイルFOO(class)から読み込みました。
最小レコード長は9です。
最大レコード長は15です。
NOTE: データセットWORK.CLASSは19オブザベーション、2変数です。
NOTE: DATAステートメント処理(合計処理時間):
処理時間 0.01 秒
CPU時間 0.01 秒
便利!
ログを貼ってから気がついた。
返信削除このログは、SAS Log Utilityで、ZIPファイルの読み書きを捕捉できない!
CSVでエクスポートしながらZIPファイルに書き込むことも可能です。member=でファイル名を指定します。
返信削除filename foo zip 'C:\temp\foo.zip' member='iris.txt';
proc export data=sashelp.iris outfile=foo
dbms=dlm replace;
delimiter='|';
run;