1. 程式人生 > >如何將一個邏輯庫下所有資料集的名稱彙總生成新的資料集BY:crackman

如何將一個邏輯庫下所有資料集的名稱彙總生成新的資料集BY:crackman

有些時候我們需要知道某個邏輯庫下的所有資料集的名稱,並把這些資料集名稱彙總為一個新的資料集。

第一種方法:用過程
proc contentsdata=SASHELP._all_ out=AllSASHelpData noprint;/*
注意_all_的用法*/
run;
proc contents data=MAPS._all_ out=AllMapsData noprint;
run;
data AllDataSets;
set AllSASHelpData AllMapsData;
run;
proc sort data=AllDataSets nodupkey;

/*http://crackman.net/?p=702

nodupkey的解釋*/
by Memname Libname Memtype;
run;
proc print data=AllDataSets;
where Memname like
R%;/*http://crackman.net/?tag=where-like whereLike介紹*/
var Memname Libname Memtype;
title1
Data Sets Starting with R in Specified Libraries;
run;

看看第二種方法:採用SQL查詢語句
proc sqlnumber;
title1
Files Starting with

R in Specified Libraries;
select Libname, Memname, Memtype
from dictionary.members
where libname in (
SASHELP,MAPS) and Memname like R%
order by Memname, Libname;
quit;

下面對dictionary的幾個物件進行介紹。
CATALOGS
SAS目錄的資訊
COLUMNS
SAS變數和列的資訊
EXTFILES
:外部資料資訊
INDEXES
:參與索引的列的資訊
MACROS
:巨集相關資訊
MEMBERS
:所有資料型別(表、檢視、目錄等)的資訊
OPTIONS

:當前會話選項
STYLES
ODS的樣式資訊
TABLES
:表和資料集資訊
TITLES
:標題和腳註資訊
VIEWS
: 檢視資訊

第二個方法比第一個方法簡潔多了,沒有第一個方法那樣需要對資訊進行二次處理,不需要輸出全部的contents內容。