楼主: pengh1005
8072 14

[原创博文] 请教:关于用DELETE语句删除记录后数据集文件大小不变化的问题 [推广有奖]

11
bobguy 发表于 2010-4-23 06:52:31
pengh1005 发表于 2010-4-21 09:22
在使用SAS过程中,碰到一个问题请教:
建立了一个永久数据集,在多次使用后,其大小已达到1G以上,
想只删除记录,保留其表结构,使用了DELETE命令,
发现数据集中的记录是删除了,但文件大小没有变化,还是1G以上,
而且在SAS环境下打开这个空表还是要花费从前一样的时间。
问:
1、数据集的大小只增加,不能减小的吗?
2、如何在删除了记录后,数据集文件大小也能变小?

谢谢!
There are many ways to do it. Here is a one.


264  data class;
265     retain x1-x5 9;
266     do i = 1 to 5;
267     output;
268     end;
269  run;

NOTE: The data set WORK.CLASS has 5 observations and 6 variables.
NOTE: DATA statement used (Total process time):
      real time           0.04 seconds
      cpu time            0.00 seconds


270
271  data copy_class;
272     stop;
273     set class;
274     run;

NOTE: The data set WORK.COPY_CLASS has 0 observations and 6 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds


275
276  proc delete data=class;
277  run;

NOTE: Deleting WORK.CLASS (memtype=DATA).
NOTE: PROCEDURE DELETE used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds

12
pengh1005 发表于 2010-4-26 11:15:56
bobguy 发表于 2010-4-23 06:52
pengh1005 发表于 2010-4-21 09:22
在使用SAS过程中,碰到一个问题请教:
建立了一个永久数据集,在多次使用后,其大小已达到1G以上,
想只删除记录,保留其表结构,使用了DELETE命令,
发现数据集中的记录是删除了,但文件大小没有变化,还是1G以上,
而且在SAS环境下打开这个空表还是要花费从前一样的时间。
问:
1、数据集的大小只增加,不能减小的吗?
2、如何在删除了记录后,数据集文件大小也能变小?

谢谢!
There are many ways to do it. Here is a one.


264  data class;
265     retain x1-x5 9;
266     do i = 1 to 5;
267     output;
268     end;
269  run;

NOTE: The data set WORK.CLASS has 5 observations and 6 variables.
NOTE: DATA statement used (Total process time):
      real time           0.04 seconds
      cpu time            0.00 seconds


270
271  data copy_class;
272     stop;
273     set class;
274     run;

NOTE: The data set WORK.COPY_CLASS has 0 observations and 6 variables.
NOTE: DATA statement used (Total process time):
      real time           0.01 seconds
      cpu time            0.01 seconds


275
276  proc delete data=class;
277  run;

NOTE: Deleting WORK.CLASS (memtype=DATA).
NOTE: PROCEDURE DELETE used (Total process time):
      real time           0.00 seconds
      cpu time            0.00 seconds
慢慢学习消化!!
谢谢了!!

13
zhenglaiyi 发表于 2010-4-26 13:49:31
建个新表
set一下

14
sxlion 发表于 2010-4-27 22:00:00
data步的另外一种方法:

data copy_class2;
     set class(obs=0);
run;

15
pengh1005 发表于 2010-4-28 21:13:19
我现在使用的方法。用SQL SERVER管理数据,使用时,用LIBNAME建立逻辑库。
至于使用SQL SERVER与使用SAS数据集的不同,要慢慢体会,也期望大家多指点。

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 13:37