4

SAS データセットを SAS から FTP にエクスポートしたいと考えていました。次のコマンドを使用して、csv ファイル (または txt ファイル) をエクスポートできます。

%macro export_to_ftp(dsn= ,outfile_name= );

Filename MyFTP ftp "&outfile_name." 
HOST='ftp.site.com'
                 cd= "&DATA_STRM/QC" 
                  USER=&ftp_user.
                  PASS=&ftp_pass.;

PROC EXPORT DATA= &dsn. OUTFILE= MyFTP DBMS=%SCAN(&outfile_name.,2,.) REPLACE; 
RUN; filename MyFTP clear;
%mend;

%export_to_ftp(dsn=lib1.dataset ,outfile_name=dataset.csv);

しかし、それを使用して SAS データセットをエクスポートすることはできませんでした。誰でも私を助けてください。

ありがとうございました!

4

5 に答える 5

4

PROC EXPORTJoe が言うように、 FTP を使用して転送するファイルを作成するために使用することはありません。SAS データセットを交換する最も安全な方法は、 を使用PROC CPORTして移送ファイルを作成することです。元のマクロの修正版は次のとおりです。

%macro export_to_ftp(dsn= ,outfile_name= );

%let DBMS=%UPCASE(%SCAN(&outfile_name.,2,.));

%if &DBMS ne CSV and &DBMS ne TXT and &DBMS ne CPT %then %do;
   %put &DBMS is not supported.;
   %goto getout;
   %end;

%if &DBMS=CPT %then %do;
filename MyFTP ftp "&outfile_name." 
   HOST='ftp.site.com'
   cd= "&DATA_STRM/QC" 
   USER=&ftp_user.
   PASS=&ftp_pass.
   rcmd='binary';
PROC CPORT DATA= &dsn. 
     FILE = MyFTP;
RUN;
%end;

%else %do;
filename MyFTP ftp "&outfile_name." 
   HOST='ftp.site.com'
   cd= "&DATA_STRM/QC" 
   USER=&ftp_user.
   PASS=&ftp_pass.
   rcmd='ascii';

PROC EXPORT DATA= &dsn. 
     OUTFILE= MyFTP 
     DBMS= &dbms REPLACE; 
RUN; 
%end;

filename MyFTP clear;

%getout:

%mend;

%export_to_ftp(dsn=lib1.dataset ,outfile_name=dataset.csv);
%export_to_ftp(dsn=lib1.dataset ,outfile_name=dataset.cpt);

慣例により、これはファイル拡張子 を使用してcpt、SAS トランスポート ファイルを作成することを識別します。ファイルを受け取った人は誰でも、ファイルをPROC CIMPORTSAS データセットに戻すために使用します。

filename xpt 'path-to-transport-file';
proc cimport data=dataset infile=xpt;
run;
filename xpt clear;

SAS 転送ファイルはバイナリ ファイルとして転送する必要があることに注意してください。他の 2 つの形式はテキスト ファイルです。したがって、異なるfilenameステートメント。

を使用する多くの利点の 1 つは、PROC CPORT存在する可能性のあるインデックスを含め、データ セット全体がコピーされることです。また、データ セットを作成したオペレーティング システムとは異なるオペレーティング システムでデータ セットを使用することに関連する問題からも保護されます。

于 2013-07-08T15:08:03.503 に答える