Optimisation espace disque
par
, 17/07/2015 à 19h16 (639 Affichages)
Bonjour,
Je partage ce code avec vous:
Cordialement
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 option symbolgen mprint; %macro optimisation(lib=); proc contents data=&lib.._all_ out=tt.tables (keep=memname) noprint; run; proc sort data=tt.tables nodup; by memname; run; %macro opt(memname=); proc contents data=&lib..&memname. out=tt.tt1 noprint; run; data tt.tt1 (where=(type=2)); set tt.tt1; run; data _null_; set tt.tt1 end=last; call symputx ('nn'||left(_n_),name); IF last then call symputx('cnt',_n_); run; data _null_; %do i=1 %to &cnt; %global val&i; proc sql; select max(length(&&nn&i)) into: val&i from &lib..&memname.; quit; %end; run; data _null_; %do i=1 %to &cnt; proc sql noprint; alter table &lib..&memname. modify &&nn&i char(&&val&i.) format=$%sysfunc(trim(&&val&i.)). informat=$%sysfunc(trim(&&val&i.)). ; %end; run; %mend; data _null_; set tt.tables; call execute('%nrstr(%opt(memname='||strip(memname)||'));'); run; %mend; %optimisation(lib=work);