应用sas在ftp上批量下载文件
做数据分析,难免会有其他的数据获取方式,求人不如求己,用sas的小伙伴不要气馁!
接下来让我们看一下sas代码实现在ftp上批量下载文件
首先我们先上代码:
%macro getfile(lcd,cd,user,pwd,host);
filename dir ftp '' ls user="&user." pass ="&pwd."
host="&host." cd = "&cd." prompt;
/*获取ftp的cd地址下的文件目录*/
data _null_;
length fname $50.;
infile dir;
input fname;
put fname = ;
/*生成宏变量和循环次数*/
call symput(compress("fname"||_N_),compress(fname));
call symput("count",_N_);
run;
%do i = 1 %to &count.;
filename remote ftp "&cd." DIR
host="&host."
user="&user." pass="&pwd." prompt rcmd="binary" recfm=s debug;
filename local "&lcd." recfm=n;
/*文件下载*/
data _null_;
infile remote("&&fname&i.") NBYTE=n;
input;
file local("&&fname&i.");
put _infile_ @@;
run;
%end;
%mend;
然后我们就代码里的细节进行掌握
我们就libname与filename的区别来理解filename的应用
libname:libname是建立一个逻辑库,表示一个library
filename: 是用来表示一个计算机中的文件 ,也可以是一个目录,Filename的文件需要通过input变化为数据 集才能使用
如果想实现上传只需要把“文件下载”里的remote和local进行调换
下面来看一下_null_数据集里内容就是ftp目标文件夹里的文件名
还有最后下载结果:
是不是很强大,所有格式都没问题!!!
网友评论