全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
7909 14
2010-04-21
在使用SAS过程中,碰到一个问题请教:
建立了一个永久数据集,在多次使用后,其大小已达到1G以上,
想只删除记录,保留其表结构,使用了DELETE命令,
发现数据集中的记录是删除了,但文件大小没有变化,还是1G以上,
而且在SAS环境下打开这个空表还是要花费从前一样的时间。
问:
1、数据集的大小只增加,不能减小的吗?
2、如何在删除了记录后,数据集文件大小也能变小?

谢谢!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2010-4-21 09:50:11
sas sql的delete机制删除记录而不释放表空间,可能是一种空间换效率的机制
想"回收"那些表空间的办法是重建原表一次(说实话,这个办法很傻)

期待高手回答
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-4-21 09:50:48
用proc sql;delete语句表空间不释放。和soporaeternus 讨论过这个问题,具体你用小表实验一下,delete之后,再看contents,会看到删除的观测数是你刚del的记录数。且打开数据集查看,表的sequence也不再连续。
所以delete只是把观测置空,然后空观测不再显示。
如果要减小数据集还是用data步的del,或者用create table except也可以,不过这类方法都是重新生成然后覆盖的原理。而要只仅在原表上操作的话达到减小表空间的话,期待牛人解答。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-4-21 10:11:01
感谢soporaeternus 和yatming的解答。
重建表是可行的解决办法,我也认为是比较傻的(现在我也只能这么做),呵呵。
感觉上应该有什么机制或命令能压缩或释放空间的。
期待更好的解决办法!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-4-21 11:43:03
proc sql;
create table a like b;
quit;
data b;
set a;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2010-4-21 16:28:25
crackman 发表于 2010-4-21 11:43
proc sql;
create table a like b;
quit;
data b;
set a;
run;
谢谢。这是代码实现的方法。
不知有没有命令来实现??
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群