BookmarkSubscribeRSS Feed
☑ This topic is solved. Need further help from the community? Please sign in and ask a new question.
RxJunior
Fluorite | Level 6

Bom dia Pessoal, espero que todos estejam bem!

 

Estou tentando mapear os arquivos constantes em uma Librarie e coloca-los em um dataset contendo os nomes de cada uma das tabelas em uma coluna, para em seguida, iterar uma consulta para que seja realizada em cada uma das tabelas da librarie. 

 

Já realizo esse procedimento para arquivos que estão em pastas, utilizando o comando DOPEN, contudo, não estou conseguindo aplicar esse mesmo conceito para uma librarie

 

trecho do código...

 

%let caminho =/sasdata/[...]/;
filename _folder_ "%bquote(&caminho.)";

 

DATA WORK.ARQUIVOS_DIRETORIO(KEEP=[campos]);
HANDLE=DOPEN('_FOLDER_');
IF HANDLE > 0 THEN DO;
COUNT=DNUM(HANDLE);
DO I=1 TO COUNT;

.

.

.

 

1 ACCEPTED SOLUTION

Accepted Solutions
Joao_Santana
Fluorite | Level 6

Olá,

 

acho que isso aqui pode ajudar muito:


libname apa "caminho";

proc contents data=apa._all_ out=apa.__CONTENTS_ERRO
(keep= LIBNAME MEMNAME VARNUM NAME TYPE LENGTH LABEL FORMAT INFORMAT SORTEDBY IDXUSAGE COMPRESS NODUPKEY CRDATE)
noprint ;
run;

 

 

isso devolve uma tabela sas, depois é só filtrar a coluna onde tem os nomes das tabelas.

View solution in original post

5 REPLIES 5
Leandro_Vasconc
Fluorite | Level 6

Acho que isso pode ajudar

 

 


filename sessoes pipe "ls -l -1 -t /endereço da pasta/";     /*ex endereço: /desktop/sas/publico/ */
 
data CAPTURA_BASE;
infile sessoes dlm=" " firstobs=2 truncover;
input /*lista as colunas que serão apresentadas*/
Permissions $
Directories
Owner $
Group $
Size
Mes $
Dia
Hora $
Directory_file $ 50.;
if Directories = 1;
pasta="publico";
run;
Joao_Santana
Fluorite | Level 6

Olá,

 

acho que isso aqui pode ajudar muito:


libname apa "caminho";

proc contents data=apa._all_ out=apa.__CONTENTS_ERRO
(keep= LIBNAME MEMNAME VARNUM NAME TYPE LENGTH LABEL FORMAT INFORMAT SORTEDBY IDXUSAGE COMPRESS NODUPKEY CRDATE)
noprint ;
run;

 

 

isso devolve uma tabela sas, depois é só filtrar a coluna onde tem os nomes das tabelas.

RxJunior
Fluorite | Level 6
Obrigado João!!!!!
Era isso mesmo que eu queria...
Rita2021
Calcite | Level 5

olá boa tarde,


Estou utilizando esse codigo para listar todas bases que tenho na library. Preciso do nome, tamanho, owner que criou a tabela e etc..

 

proc contents data=franch._all_ out=franch.__CONTENTS_ERRO
(keep= LIBNAME MEMNAME VARNUM NAME TYPE LENGTH LABEL FORMAT INFORMAT SORTEDBY IDXUSAGE COMPRESS NODUPKEY CRDATE)
noprint ;
run;

 

Só preciso colocar o owner. Eu tentei colocar owner mas não funcionou. Como seria no codigo?


Muito obrigada.

felipe_campos
Fluorite | Level 6

Outra maneira também seria via PROC SQL.

 

PROC SQL;

    CREATE TABLE LISTA AS
    SELECT * FROM DICTIONARY.COLUMNS
    WHERE LIBNAME = 'SUA_LIB';

QUIT;

Irá criar um dataset com todas as tabelas e colunas dessas tabelas assim como as informações sobre elas, semelhante ao PROC CONTENTS.

 

Daí é só exportar.

 

SAS Innovate 2025: Call for Content

Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!

Submit your idea!

Discussion stats
  • 5 replies
  • 4187 views
  • 9 likes
  • 5 in conversation