备注文件如何瘦身?

高舒林 2012-04-24 11:10:27
我的表文件采用通用字段存放了一些PDF文件,但近来发现备注文件特别大,可达好几百MB,但实际文件并没有这么大,不知道什么原因,有没有什么办法可以减小备注文件?
我采用PACK memo之后,有些文件减小了一些,但还有很多没有减小的,不知道有没有更好的办法?
...全文
126 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
lc_apple 2012-04-24
  • 打赏
  • 举报
回复
路过。。。。。做个记号
lygcw9602 2012-04-24
  • 打赏
  • 举报
回复

Visual Foxpro 表备注文件的“瘦身”技巧
http://www.redlib.cn/html/8044/2003/16481414.htm
十豆三 2012-04-24
  • 打赏
  • 举报
回复
*备注文件(.FPT)的“瘦身”方法

*------------------------------------

我有一小小程序,其中一表有四个备注字段,主要是对备注字段进行操作,可运行了一段时间后,发现FPT文件巨大得恐怖,达几百兆,其实我的备注内容实际文本加起来也不可能超过一兆的,这是为何?

-------------------------------------

用命令:PACK MEMO

参数
MEMO
从备注文件中删除未使用空间,但不从表中删除标有删除标记的记录。(即只对备注字段处理)
从而达到备注文件“瘦身”的目的,有点类似ACCESS中压缩数据库的方法。


转自:Foxer(狐狸)

备注字段增加的根源在于VFP对于MEMO字段的管理方式。
在VFP中,MEMO类型的字段时要求连续空间的,当你更改一条记录的MEMO字段内容,VFP将根据当前所占用的空间进行如下判断:1.现有空间(BLOCKSIZE*N)足够保存新的内容,则用当前空间,否则,把当前空间增加BLOCKSIZE设定的空间值,遗弃当前的空间,在FPT文件尾添加新的空间,而被VFP遗弃的空间VFP没有办法回收利用,所以,当你的MEMO字段内容更改频繁,且内容逐渐增加时,FPT文件会越来越大。
用COPY TO复制到新表的时候,VFP并非进行文件级复制操作,而是记录级操作,所以被遗弃的空间是不能复制到新表的,也就是复制后的新表中是没有被遗弃的那部分空间,所以就变小了。
而当使用 pack (MEMO)命令时,Visual FoxPro 把所有没做删除标记的记录复制到一个临时表(temporary table)中。执行完 pack 命令后,Visual FoxPro 把原表从磁盘上删除,同时用原表名命名临时表,这个过程就执行复制的过程,所以会变小。

因此,让FPT增加速度减缓的方法就是设置较大的BLOCKSIZE(SET BLOCKSIZE TO 64为默认值),这样,每个MEMO记录浪费的空间会增加,但VFP申请新的空间频率减小,总的来说,FPT文件的大小增加会慢一些。

2,722

社区成员

发帖
与我相关
我的任务
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧