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;