SAS - 有效删除库中的所有完整性约束

时间:2017-08-03 15:28:33

标签: sas

我编写了一些代码来删除库中的所有完整性约束。但是,当我加载了很多表/库时,从sashelp.vtable读取需要花费很长时间。如何在SAS 9.4中更有效地完成它,同时保持简单?

%let mv_lib='DL';
data _null_;
    set sashelp.vtable (keep=libname memtype memname) end=eof;
    where libname=&mv_lib. and memtype='DATA';
    if _n_ = 1  then call execute('proc datasets library='||&mv_lib.||' nolist nodetails;');    
                     call execute(catx(' ','modify',memname,'; ic delete _all_; run;'));
    if eof      then call execute('quit;');
run;

1 个答案:

答案 0 :(得分:0)

我认为发生的事情是SAS无法将WHERE从数据步骤通过SASHELP.VTABLE视图传递到DICTIONARY.TABLES对象的实际查询,因此您正在查询所有的libnames。

尝试使用PROC SQL。

%let mv_lib='DL';
proc sql ;
  create table mylist as
    select libname,memname 
    from dictionary.tables 
    where libname=&mv_lib. and memtype='DATA'
  ;
quit;
data _null_;
  set mylist ;
  ...