затем экспортируйте некоторые из этих таблиц
Внутри макроса вы, вероятно, не хотите проверять предмет для экспорта по имени. Если вы это сделаете, макрос будет содержать большое количество ifs, проверяющих, какой аргумент подходит для экспорта.
У лучшего макроса будет дополнительный параметр export=
со значением по умолчанию 0
, и вызываемый объект устанавливает его на 1
для экспортируемых наборов данных
%MACRO fetcher (
remoteLibref=conn,
remoteSchema=db,
object=,
outlib=work,
out=&object,
export=0,
outpath=C:\exports\&remoteSchema,
outname=&object
);
proc sql;
connect using &remoteLibref;
create table &outlib..&out as select * from connection to &remoteLibref
( select *
from &remoteSchema..&object
);
disconnect from &remoteLibref;
quit;
%if &export %then %do;
proc export
dbms=dlm
data=&outlib..&out.
replace outfile="&outpath.\&object..txt"
;
delimiter="|";
run;
%end;
%mend fetcher;
Вызовите его для различных удаленных объектов, указав явным образом экспортируемые объекты
libname conn sqlserver … connection string … ;
%fetcher(object=AddressCategory, export=1)
%fetcher(object=AddressBook)
%fetcher(object=PreferenceCategory, export=1)
%fetcher(object=PreferenceItems)
%fetcher(object=PreferenceProperties)
%fetcher(object=Payouts, export=1)
%fetcher(object=Payouts, RemoteSchema=DBX, export=1, outname=hidden-payouts)