2017-08-03 7 views
0

ライブラリからすべての整合性制約を削除するコードを記述しました。しかし、多くのテーブル/ライブラリがロードされている場合、sashelp.vtableから読み取るには時間がかかります。 SAS 9.4ではどのようにして簡単に保つことができますか?SAS - ライブラリからすべての整合性制約を効率的に削除する

%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; 

答えて

0

は、私は何が起こっているかがDICTIONARY.TABLESはそうあなたがALL libnamesを照会しているオブジェクトへのSASは、実際のクエリにSASHELP.VTABLEビューを通して、あなたのデータの段階からWHEREを渡すことはできませんということだと思います。

代わりに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 ; 
    ... 
+0

dictionary.table ** s **ですか?はるかに速く働いた、ありがとう! –

+0

SASHELP.VTABLEはDICTIONARY.TABLESを照会します。 – Tom

関連する問題