dbf数据大,处理时提示 "not enought memory for file map"

zzizz 2011-12-10 12:33:44
有一个数据表(例:Table1),里边有160多万条记录,在处理的时候出现"not enought memory for file map"这样的错误。

大概流程是先把它的数据备份到另一个表中,然后再删除本表中的Data:

SELECT Table1
SET ORDER TO TAG tag1
SCAN
SELECT Table1
SCATTER MEMVAR MEMO
INSERT INTO Table1_bak From Memvar
SELECT Table1
Delte
ENDSCAN

好象是处理到Table1中间的哪个地方出错的,电脑是双核的,内存4G,C盘剩余空间还有70多G,程序是vfp6.0写的。

请各位高手指点,不胜感激,谢谢!
...全文
60 点赞 收藏 7
写回复
7 条回复
zzizz 2011年12月12日
因为table1中的数据不是所有的都要备份后删除掉,要先判断的,要删除的才放到bak表中,一开始我没有讲明白,所以才用了scan的循环,一条条的判断,不能用append from,我也改为Insert 试过,也不行。
回复 点赞
dfwxj 2011年12月12日
appe和DELE的时候都带上条件就行了
回复 点赞
十豆三 2011年12月12日
你这样:
先判断,要删除的加上 删除标记,判断完后,再将带删除标记一次性导入到 bak 表中,最后再删除原表带删除标记的。
回复 点赞
zzizz 2011年12月10日
标哥,这是公司N年前开发的vfp版本,现在用的都是vfp9开发的,客户用习惯了,不愿意升级。
回复 点赞
aabiao 2011年12月10日
如果只是干这么简单的事情,干嘛不直接COPY TO呀?
6版是十几年前的产品了,干嘛不用9版呀?
回复 点赞
十豆三 2011年12月10日
改为:
Select Table1
Set Order To Tag tag1
Scan
Insert Into Table1_bak (字段1,...,字段N) )Values (Table1.字段1,...,Table1.字段N)
Select Table1
Delete
Endscan

为何一条一条复制,至少可以1000条一复制呀,或者整表复制。
回复 点赞
dfwxj 2011年12月10日
先用APPE FROM,再ZAP不就行了?

VFP6要升到VFP9,在VFP9下编译一下就行了
回复 点赞
发动态
发帖子
VFP
创建于2007-09-28

2283

社区成员

2.9w+

社区内容

VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区公告
暂无公告