應(yīng)用sas在ftp上批量下載文件
做數(shù)據(jù)分析秦驯,難免會(huì)有其他的數(shù)據(jù)獲取方式同衣,求人不如求己朝氓,用sas的小伙伴不要?dú)怵H!
接下來(lái)讓我們看一下sas代碼實(shí)現(xiàn)在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 = ;
/*生成宏變量和循環(huán)次數(shù)*/
? ? 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;
然后我們就代碼里的細(xì)節(jié)進(jìn)行掌握
我們就libname與filename的區(qū)別來(lái)理解filename的應(yīng)用
libname:libname是建立一個(gè)邏輯庫(kù)督禽,表示一個(gè)library
filename:?是用來(lái)表示一個(gè)計(jì)算機(jī)中的文件 ,也可以是一個(gè)目錄,F(xiàn)ilename的文件需要通過(guò)input變化為數(shù)據(jù) ? ? ? ? ? ? ? ? ?? 集才能使用
如果想實(shí)現(xiàn)上傳只需要把“文件下載”里的remote和local進(jìn)行調(diào)換
下面來(lái)看一下_null_數(shù)據(jù)集里內(nèi)容就是ftp目標(biāo)文件夾里的文件名
還有最后下載結(jié)果:
是不是很強(qiáng)大总处,所有格式都沒(méi)問(wèn)題1繁埂!鹦马!